La funzione SQL Server IIF() ha tre parametri. La funzione IIF() giudica o valuta il primo parametro e restituisce il secondo parametro se il primo parametro è vero; altrimenti, restituisce il terzo parametro. La funzione IIF() è usata in SQL Server per aggiungere la logica if-else alle query.>
Sintassi :
IIF(boolean_value, true_value, false_value)
Parametri usati nella sintassi:
- boolean_value –
È un valore da giudicare. Deve essere un valore booleano valido, o la funzione solleverà un errore. - true_value –
È il valore da ottenere se il valore booleano è vero. - false_value –
È il valore da ottenere se il valore booleano è falso.
Fatto da sapere: La funzione IIF() è simile a un’espressione CASE –
CASE WHEN boolean_expression THEN true_value ELSE false_valueEND
Esempio-1 :
Per usare la funzione IIF() per controllare se 40 < 60 :
SELECT IIF(40 < 60, 'True', 'False') AS Result ;
Output :
Vero
Prevediamo di avere qui sotto una tabella di esempio chiamata “Geektable”:
G_id | G_status |
---|---|
1 | 3 |
2 | 2 |
3 | 4 |
4 | 2 |
5 | 3 |
6 | 1 |
7 | 2 |
8 | 1 |
9 | 4 |
10 | 1 |
11 | 4 |
12 | 3 |
13 | 1 |
14 | 3 |
Esempio-2 :
Utilizzare la funzione IIF() con la colonna della tabella.
L’esempio seguente utilizza la funzione IIF() all’interno delle funzioni IIF():
SELECT IIF(G_status = 1, ‘Waiting’, IIF(G_status=2, ‘InProgress’, IIF(G_status=3, ‘Rejected’, IIF(G_status=4, ‘Completed’) ) ) ) AS Status, COUNT(G_id) AS CountFROM GeektableGROUP BY G_status ;
Output :
Status | Count | |
---|---|---|
In attesa | 4 | |
InProgress | 3 | |
Rejected | 4 | |
Completed | 3 |
Esempio-3 :
Utilizzare la funzione IIF() con funzioni aggregate.
L’esempio seguente utilizza la funzione IIF() con la funzione SUM():
SELECT SUM(IIF(G_status = 1, 1, 0)) AS ‘Waiting’, SUM(IIF(G_status = 2, 1, 0)) AS ‘InProgress’, SUM(IIF(G_status = 3, 1, 0)) AS ‘Rejected’, SUM(IIF(G_status = 4, 1, 0)) AS ‘Completed’, COUNT(*) AS TotalFROM Geektable;
Output :
Qui, la funzione IIF() dà come risultato 1 o 0 se lo stato corrisponde. La funzione SUM() dà come risultato il numero di ogni stato.
In attesa | In corso | Rifiutato | Completato | Totale |
---|---|---|---|---|
4 | 3 | 4 | 3 | 15 |