
Questo articolo fa parte del progetto Independent Codes
In alcuni casi può essere necessario tramite query, sommare le colonne di un db (ad esempio per visualizzare le vendite di un dato periodo) in modo condizionale, normalmente si ricorre a più query diverse per ottenere questo risultato ma c’é la possibilità di ottimizzare la query e fare tutto in un unico passaggio.
Nel caso specifico, se abbiamo un db che abbia un record per ogni articolo di magazzino presente e volessimo conoscere la giacenza, potremmo fare come segue (posto che “scaricato” sia un campo di testo dove memorizzare S e N per i due stadi del prodotto, scaricato o ancora in giacenza).
In pratica sommo 1 (perché ogni record è un pezzo fisico in magazzino, se ho 10 scatole di un prodotto, avrò 10 record, nel nostro esempio) se il pezzo è in stato N (ancora in giacenza), mentre sommerò 0 (zero) se il pezzo presenta un valore diverso da N (ad es. S, che sta per Scaricato:SI)
SUM(CASE scaricato WHEN 'N' THEN 1 ELSE 0 END) AS Giacenza