Esempi sull'utilizzo di CASE e CASE2
Vogliamo inserire uno sconto in base al fornitore dell'articolo. In questo caso si può ottenere lo stesso risultato utilizzando sia la funzione CASE(Exp,Val1,a,Val2,b,,,,n), sia la funzione CASE2(Exp1,a,Exp2,b,,,,n).
Inseriamo alla query un nuovo campo vuoto e vi inseriamo, tramite l'Expression Builder, l'espressione
[CASE(articoli.FORNITORE,'000001',5,'000002',4,0)]
Tradotto in SQLServer, corrisponde a
CASE articoli.FORNITORE WHEN '000001' THEN 5 WHEN '000002' THEN 4 ELSE 0 END
Possiamo ottenere lo stesso risultato con la CASE2(Exp1,a,Exp2,b,,,,n):
[CASE2(articoli.FORNITORE='000001',5,articoli.FORNITORE='000002',4,0)]
CASE WHEN articoli.FORNITORE='000001' THEN 5 WHEN articoli.FORNITORE='000002' THEN 4 ELSE 0 END
Se vogliamo inserire nella query un campo che indica la disponibilità dell'articolo. In questo caso, si deve utilizzare la funzione CASE2(Exp1,a,Exp2,b,,,,n) perché la funzione CASE(Exp,Val1,a,Val2,b,,,,n) applica automaticamente la condizione di confronto di uguaglianza.
La funzione CASE2(Exp1,a,Exp2,b,,,,n) sarà applicata nel seguente modo:
[CASE2(articoli.QUANTITA>0,S,N)]
CASE WHEN articoli.QUANTITA>0 THEN S ELSE N END
Nota bene
CASE e CASE2 differiscono sostanzialmente nel fatto che le condizioni di confronto del CASE sono solo di tipo uguaglianza, mentre le condizioni di confronto di CASE2 possono essere di qualsiasi tipo.