Die SQL Server IIF()-Funktion hat drei Parameter. Die IIF()-Funktion beurteilt oder wertet den ersten Parameter aus und gibt den zweiten Parameter zurück, wenn der erste Parameter wahr ist; andernfalls gibt sie den dritten Parameter zurück. Die IIF()-Funktion wird in SQL Server verwendet, um Abfragen eine if-else-Logik hinzuzufügen.>
Syntax :
IIF(boolean_value, true_value, false_value)
Parameter, die in der Syntax verwendet werden:
- boolean_value –
Es ist ein Wert, der beurteilt werden soll. Es muss ein gültiger boolescher Wert sein, sonst löst die Funktion einen Fehler aus. - true_value –
Es ist der Wert, der sich ergibt, wenn der boolesche Wert auf true steht. - false_value –
Es ist der Wert, der sich ergibt, wenn der boolesche Wert auf false steht.
Wissenswertes: Die IIF()-Funktion ist ähnlich wie ein CASE-Ausdruck –
CASE WHEN boolean_expression THEN true_value ELSE false_valueEND
Beispiel-1 :
Mit der IIF()-Funktion soll geprüft werden, ob 40 < 60 :
SELECT IIF(40 < 60, 'True', 'False') AS Result ;
Ausgabe :
True
Angenommen, wir haben unten eine Beispieltabelle mit dem Namen „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 |
Beispiel-2 :
Um die Funktion IIF() mit einer Tabellenspalte zu verwenden.
Nachfolgendes Beispiel verwendet die IIF()-Funktion innerhalb der IIF()-Funktionen:
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 ;
Ausgabe :
Status | Anzahl |
---|---|
Warten | 4 |
InProgress | 3 |
Abgelehnt | 4 |
Fertiggestellt | 3 |
Beispiel-3 :
Die Verwendung der Funktion IIF() mit Aggregatfunktionen.
Unteres Beispiel verwendet die IIF()-Funktion mit der SUM()-Funktion:
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;
Ausgabe :
Hier ergibt die IIF()-Funktion 1 oder 0, wenn der Status übereinstimmt. Die SUM()-Funktion ergibt die Anzahl der einzelnen Status.
Wartend | InProgress | Abgelehnt | Abgeschlossen | Gesamt |
---|---|---|---|---|
4 | 3 | 4 | 3 | 15 |