Archivio mensile:Gennaio 2019

COALESCE

Dovevo fare una cosa semplice… Verificare il contenuto di due colonne presenti su tabelle diverse… Girovagando su internet ho trovato la funzione coalesce. L’esempio che ho trovato , a fronte di un prezzo di vendita e di un prezzo minimo, calcola il prezzo di vendita (10% di sconto) ed in assenza di prezzi, impone un prezzo simbolico di 5.

SELECT product_id, list_price, min_price,    
COALESCE(0.9*list_price, min_price, 5) "Sale"
FROM product_information
WHERE supplier_id = 102050
ORDER BY product_id, list_price, min_price, "Sale";

PRODUCT_ID LIST_PRICE MIN_PRICE Sale
---------- ---------- ---------- ----------
1769 48 43.2
1770 73 73
2378 305 247 274.5
2382 850 731 765
3355 5

La mia query completa è questa:

select coalesce(a.prodotto, b.prodotto) prodotto,
coalesce(a.atotal, 0) atotal,
coalesce(b.btotal, 0) btotal
from
(
select prodotto, count() aTotal
from vend_mensile
group by prodotto )
a full outer join
( select prodotto, count() bTotal
from vend_giornaliere
group by prodotto
) b
on a.prodotto = b.prodotto
where coalesce(a.atotal, 0) <> coalesce(b.btotal, 0);

la full_outer_join serve per recuperare anche le colonne dove no sono presenti dati.