SQL Server CASE-Anweisung ist äquivalent zu “ IF-then-Anweisung in Excel.
Die CASE-Anweisung wird verwendet, um die Logik zu implementieren, in der Sie den Wert einer Spalte abhängig von den Werten in anderen Spalten festlegen möchten.
Die SQL Server CASE-Anweisung besteht aus mindestens einem Paar von WHEN-und THEN-Anweisungen. Die WHEN-Anweisung gibt die zu testende Bedingung an. Die THEN Anweisung gibt die Aktion an, wenn die WHEN Bedingung TRUE zurückgibt.,
Die ELSE-Anweisung ist optional und wird ausgeführt, wenn keine der WHEN-Bedingungen true zurückgibt. Die CASE-Anweisung endet mit einem END-Schlüsselwort.
In diesem Artikel werfen wir einen Blick auf eine Reihe verschiedener Beispiele der CASE-Anweisung. Aber bevor wir das tun, erstellen wir einige Dummy-Daten, mit denen wir arbeiten können.,/td>
Das obige Skript hat erstellt eine dummy-Datenbank namens ShowRoom mit einer Tabelle namens Autos., Die Tabelle Cars enthält sieben Spalten: ID, Name, Firma, Leistung, Farbe, Modell und Zustand.
Fügen wir nun einige Dummy-Daten in die Cars-Tabelle ein., Führen Sie das folgende Skript aus:
Lassen Sie uns überprüfen, wie unser Datensatz aussieht, führen Sie das folgende Skript aus:
1
|
SELECT * FROM *
|
Die Ausgabe sieht folgendermaßen aus:
Sie können sehen, dass die Bedingungsspalte derzeit in jeder Zeile ein X enthält., Wir legen den Wert der Bedingungsspalte abhängig von der Modellspalte mithilfe der CASE-Anweisung fest, damit Sie klar sehen können, was los ist.,
The syntax of the CASE statement is pretty straight forward:
1
2
3
4
5
|
SELECT column1,
column2,
CASE WHEN CONDITION THEN ‚Value1‘
ELSE ‚Value2‘ END AS columnX
FROM Cars
|
The CASE statement has to be included inside the SELECT Statement., Es beginnt mit dem Schlüsselwort CASE gefolgt vom Schlüsselwort WHEN und dann der BEDINGUNG.
Die Bedingung kann jeder gültige SQL Server-Ausdruck sein, der einen booleschen Wert zurückgibt. Zum Beispiel kann die Bedingung model > 2000, die THEN Klausel wird nach der BEDINGUNG verwendet. Wenn die BEDINGUNG true zurückgibt, wird der Wert, der der THEN Klausel folgt, in columnX gespeichert. Else, der Wert nach der ELSE-Klausel, wird ebenfalls in columnX gespeichert. Die SQL Server CASE-Anweisung endet mit der END-Klausel.,
Beispiele für CASE-Anweisungen
Sehen wir uns nun die CASE-Anweisung in Aktion an.
In einem vorherigen Abschnitt haben wir eine Tabelle mit dem Namen Cars in der ShowRoom-Datenbank erstellt.
Die Bedingungsspalte hatte für alle Zeilen den Wert X. Wir verwenden die SQL Server CASE-Anweisung, um den Wert der Bedingungsspalte auf „Neu“ zu setzen, wenn die Modellspalte einen Wert größer als 2000 hat, andernfalls wird der Wert für die Bedingungsspalte auf „Alt“gesetzt.,ok at the following script:
1
2
3
4
5
|
SELECT name,
model,
CASE WHEN model > 2000 THEN ‚New‘
ELSE ‚Old‘ END AS condition
FROM Cars
|
The above script displays the name, model and condition columns from the Cars table., Die Ausgabe des obigen Skripts sieht folgendermaßen aus:
Sie können sehen, dass der Wert von X in der Spalte Bedingung durch“ Neu „und“ Alt “ ersetzt wurde je nach Modell des Fahrzeugs.
Mehrere Bedingungen in der CASE-Anweisung
Sie können mehrere Bedingungen in der CASE-Anweisung auswerten.,
Schreiben wir eine SQL Server CASE-Anweisung, die den Wert der Bedingungsspalte auf „Neu“ setzt, wenn der Wert in der Modellspalte größer als 2010 ist, auf „Durchschnitt“, wenn der Wert in der Modellspalte größer als 2000 ist, und auf „Alt“, wenn der Wert in der Modellspalte größer als 1990 ist.,
Die Ausgabe des obigen Skripts sieht folgendermaßen aus:
Im obigen Skript haben wir der Bedingungsspalte je nach Wert in der Modellspalte drei verschiedene Werte zugewiesen.,
Im obigen Skript überlappen sich die Bedingungen jedoch als. das Modell mit einem Wert größer als 2010 hat auch einen Wert größer als 2000 und 1990. Eine bessere Möglichkeit, mehrere Bedingungen zu implementieren, besteht darin, logische Operatoren wie AND, OR, NOT usw. zu verwenden.,N model > 2010 DANN ‚New‘
Die Ausgabe des obigen Skripts sieht folgendermaßen aus:
Wir können auch mehrere Bedingungen aus verschiedenen Spalten mithilfe der SQL Server CASE-Anweisung auswerten., Im folgenden Beispiel weisen wir der Spalte Bedingung den Wert „Neues Weiß“ zu, wobei das Modell größer als 2010 und die Farbe weiß ist.,HEN ‚New‘
Die Ausgabe sieht folgendermaßen aus:
Sie können in Zeile 5 sehen, dass der Wert für die Bedingungsspalte in der Ausgabe auf „Neues Weiß“ gesetzt wurde, da die Farbe weiß ist und das Modell größer als 2010 ist.,
Verwenden von GROUP BY mit SQL Server CASE-Anweisung
Die CASE-Anweisung kann auch in Verbindung mit der GROUP BY-Anweisung verwendet werden, um Aggregatfunktionen anzuwenden.,v id=“1dd7e33b85″>
Im obigen Skript verwenden wir die COUNT Aggregate-Funktion mit der CASE-Anweisung.,
Die SQL Server CASE-Anweisung setzt den Wert der Bedingungsspalte auf “ Neu „oder“Alt“. Innerhalb der GROUP BY-Klausel geben wir an, dass die entsprechende Anzahl für „Neu“ um 1 erhöht wird, wenn ein Modellwert von mehr als 2000 auftritt. Der Else-Abschnitt bedeutet, dass wir die Anzahl für „Alt“ um 1 erhöhen, wenn der Wert des Modells 2000 oder weniger beträgt. Die Ausgabe des obigen Skripts sieht folgendermaßen aus:
Da unser Datensatz fünf Fahrzeuge mit einem Wert für ‚model‘ von größer als 2000 hat, können Sie eine 5 in der Spalte count für“ Neue “ Fahrzeuge sehen., Ebenso hatten wir 5 alte Fahrzeuge und daher können wir 5 für die Zählspalte von „alten“ Fahrzeugen sehen.
In ähnlicher Weise können wir UM mehr als zwei Werte gruppieren., 2000 THEN ‚Average‘
Im obigen Skript gruppierten wir die Daten in drei Kategorien: „New“, „Average“ und „Old“.,
Die Ausgabe sieht folgendermaßen aus:
Sie können die Anzahl für“ Neue“,“ Durchschnittliche „und“ Alte “ Zustand Autos sehen.
Schlussfolgerung
Die CASE-Anweisung ist praktisch, wenn Sie IF-THEN-Logik in SQL Server implementieren möchten. In diesem Artikel haben wir gesehen, welche CASE-Anweisung zusammen mit ihrer Syntax ist. Wir haben auch verschiedene Beispiele für CASE-Anweisungen zusammen mit ihrer Verwendung mit der GROUP BY-Klausel gesehen.,
Andere großartige Artikel von Ben
- SQL Server query plan Cache verstehen
- Was ist der Unterschied zwischen gruppierten und nicht gruppierten Indizes in SQL Server?
- Verwendung von Fensterfunktionen
- Abfragen von Daten mithilfe der SQL Server-CASE-Anweisung
- Autor
- Letzte Beiträge
Alle Beiträge von Ben Richardson
- Power BI: Wasserfalldiagramme und kombinierte Grafiken – 19. Januar 2021