SQL Grundkurs 1: Die Sprache erlernen

Bedingungen mit CASE - erweiterte Syntax

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Wenn Sie die erweiterte Syntax der CASE-Anweisung verwenden, können Sie wie in einer WHERE-Klausel den gesamten Umfang an Möglichkeiten zur Kriteriendefinition auch in CASE verwenden. Damit lassen sich auch komplexe Bedingungen in Ausdrücken und Berechnungen verwenden.

Transkript

In diesem weiteren Video möchte ich Ihnen nun die erweiterte Syntax der CASE-Bedingung näherbringen. Zur Erinnerung, bei der einfachen Syntax waren wir daraufhin eingeschränkt, dass wir nur eine Sache vergleichen konnten, d.h. in jedem Vergleichsdurchgang konnte nur dasselbe geprüft werden. Wir konnten nur prüfen, ob das Geschlecht einen bestimmten Wert hat oder den oder den. Wir konnten nicht zwischendurch auf ein anderes Kriterium wechseln. Wir konnten nicht mehrere Bedingungen definieren und wir konnten nicht andere Vergleichsoperatoren außer dem Gleichheitszeichen von der Logik her verwenden. All das kann nun die erweiterte Syntax. Wir können nun mehrere Kriterien definieren und diese mit "AND" und "oder" verknüpfen, natürlich auch Klammern setzen, um Prioritäten hier zu definieren. Wir können unterschiedliche Bedingungen verwenden. Wir können z.B. beim ersten Mal prüfen, ob das Geschlecht einen Wert hat. Wenn das nicht der Fall ist, bei der zweiten Prüfung prüfen, ob die Haarfarbe einen gewissen Wert hat oder in der dritten Bedingung dann prüfen, ob die Schuhgröße in einem Bereich von... bis ist, usw. D.h. wir können unterschiedliche Bedingungen hintereinander prüfen, sollte die vorhergehende nicht erfüllt sein. Und wir können alle Operatoren verwenden, die wir auch in WHERE-Klauseln verwenden können, "größer", "kleiner", "ungleich", "between", "like" usw. Das schauen wir uns nun mit einem Beispiel an. Ich habe hier Nachname, Vorname und Eintrittsdatum aller noch im Unternehmen befindlicher Mitarbeiter, d.h. ich habe hier die Einschränkung "Austritt ist NULL ergänzt" angeführt. Nun möchte ich hier eine berechnete Spalte ergänzen, in der wir eine Art Kategorie für die Mitarbeiter definieren und zwar soll das so aussehen, dass wir für alteingesessene entweder "Mitarbeiter" oder für Damen eben "Mitarbeiterin" ausgeben und für alle, die nach einem bestimmten Datum erst eingestellt worden sind "Jung-Mitarbeiter" bzw. "Jung-Mitarbeiterin". Dazu brauchen wir eben "CASE". Der Unterschied in der erweiterten Syntax ist, dass das "WHEN" jetzt direkt auf das "CASE" folgt und nicht der Ausdruck, wie wir es vorher hatten, in dem Fall "Geschlecht", vor dem "WHEN" geschrieben wird. Deshalb wir beginnen jetzt mit dem "WHEN". Nun kommt eine Bedingung, die exakt in der gleichen Syntax verwendet wird, wie sie in einer WHERE-Klausel vorkommen würde, z.B. verwenden wir die Bedingung "Geschlecht=1", d.h. weiblich, und wir können ja hier mehrere Bedingungen nun verwenden, mit "AND" ergänzen und das Eintrittsdatum soll ab dem z.B. verwenden wir den 1. Jänner 2007. Wenn diese Bedingung erfüllt ist, dann möchten wir als Kategorie ausgeben "Jung-Mitarbeiterin". Nun können wir so wie bei der einfachen Syntax das "WHEN" wiederholen und eine nächste Bedingung definieren, in dem Fall ändert die sich nur dahingehend, die zweite, dass das Geschlecht nun nicht "1", sondern "2" sein soll. Deshalb kopiere ich mir das Ganze. Und THEN, d.h. wenn es ein männlicher Mitarbeiter ist, der erst nach 2007, oder ab 2007, in dem Fall, eingestellt worden ist, dann wollen wir den Text "Jung-Mitarbeiter" als Kategorie ausgeben. Für alle, die schon länger im Unternehmen sind, möchten wir nur "Mitarbeiter" oder "Mitarbeiterin" ausgeben, also hier unterscheiden wir wieder nach dem Geschlecht, in dem Fall ist es nur eine Bedingung, nämlich "Geschlecht=1" und wir könnten nun schreiben, das Eintrittsdatum ist kleiner als der 01/01/2007, das müssen wir aber gar nicht, denn diese Bedingung muss erfüllt sein. Ich schreibe einmal die Zeile fertig. Dann werde ich noch erläutern, warum das der Fall ist. Ich schreibe hier noch dazu "WHEN Geschlecht=2, THEN" hier oben war es "Mitarbeiterin", und hier unten kommt der Wert hin, "Mitarbeiter". Als "ELSE" definieren wir hier noch "undefiniert" für den Fall und schließen wieder mit "END" ab. Warum mussten wir jetzt hier bei dieser dritten Bedingung nicht mehr ergänzen, dass das Eintrittsdatum vor dem 01/01/2007 liegen muss? Bei einer CASE-Anweisung ist es so, dass die Bedingungen der Reihe nach abgehandelt werden. Hier könnte man fast sagen, diese CASE-Bedingung verhält sich wie wir Männer. Wenn wir uns einmal für eine Frau entschieden haben, dann schauen wir alle weiteren nicht mehr an. Das Gleiche hier: Wenn "CASE" definiert hat, dass diese Bedingung erfüllt worden ist, dann werden in diesem Durchlauf alle weiteren gar nicht mehr angesehen. Mit anderen Worten, ist es eine Mitarbeiterin, die nach dem 01/01/2007 eingestellt worden ist, ist die erste Bedingung erfüllt. Wenn diese Bedingung nicht erfüllt ist, und es wird weiter gegangen und die zweite ist nicht erfüllt und die dritte dann ist erfüllt, dann bedeutet das ja automatisch, wenn bei der Prüfung bis hierher gekommen wird, dann muss das Eintrittsdatum vor dem 01/01/2007 liegen, weil sonst wäre ja die erste Bedingung schon erfüllt gewesen. Deshalb ist es nicht notwendig, hier noch einmal auf das Eintrittsdatum zu filtern. Das Gleiche gilt hier bei der vierten Bedingung. Wäre nämlich das Eintrittsdatum nach 2007, wäre bereits die zweite Bedingung erfüllt gewesen und bei der Prüfung wären wir gar nicht zur vierten Bedingung gekommen, d.h. die Bedingungen werden immer der Reihe nach abgearbeitet und, sobald eine erfüllt ist, werden für diesen Durchlauf die nachfolgenden Bedingungen nicht mehr betrachtet. Damit ist dieser Ausdruck fertig und ich ergänze jetzt hier abschließend nun mehr einen Alias-Namen, z.B. nenne ich diese Spalte "Kategorie", damit das Ganze auch ein Gesicht bekommt, und ich führe diese Anweisung aus. Betrachten wir uns jetzt hier das Ergebnis. Der Gernot Obermann ist 2008 eingestellt worden, ist deshalb männlich und ein "Jung-Mitarbeiter". Martin Konstantin ist schon länger im Unternehmen, ist ein "Mitarbeiter". Die Bernadette Hiller ist auch schon länger im Unternehmen, vor 2007 eingestellt, ist eine "Mitarbeiterin". Die Marion Heuer, die im April 2007 eingestellt worden ist, läuft unter "Jung-Mitarbeiterin" usw. "CASE" in der erweiterten Syntax bietet also die Möglichkeit, mehrere Bedingungen zu definieren, andere Vergleichsoperatoren als "=" zu verwenden. All das, was Sie in einer WHERE-Klausel verwenden können, alle Operatoren, alle Bedingungen, können Sie auch hier einsetzen. Damit sind Sie mit der erweiterten Syntax sehr flexibel. Auch die erweiterte Syntax ist 100 Prozent ANSI-kompatibel und funktioniert deshalb in derselben Syntax auch bei Oracle. Ich kopiere die Anweisung in den Oracle-Editor und führe sie aus. Was habe ich jetzt hier vergessen beim Kopieren? Das ist der Unterschied natürlich, das Datumsformat ist nicht Oracle-kompatibel. Darauf müssen Sie natürlich auch achten. Das werde ich jetzt hier gleich ausbessern auf das Standardformat hier meiner Oracle-Instanz. Dann wird auch hier die Anweisung das gewünschte Ergebnis liefern. Dasselbe muss ich natürlich beachten, wenn ich abschließend diese Anweisung noch in meinem Microsoft-Editor einkopiere und ausführe. Hier verwende ich das Standardformat, das allgemeingültige vom SQL-Server, d.h. hier Jahr, Monat, Tag ohne Trennzeichen und ansonsten ist die Anweisung auch ANSI-SQL kompatibel und liefert mir auch hier dasselbe Ergebnis. Ob Sie in der Praxis sich dafür entscheiden wahlweise die einfache Syntax und bei Bedarf die erweiterte Syntax zu verwenden, oder Sie sagen sich, ich möchte eigentlich immer eine einheitliche Syntax verwenden und Sie entscheiden sich generell für die erweiterte Syntax, das liegt in Ihrem Ermessen. Sie sollten das Ganze so verwenden, wie es für Sie einfacher und übersichtlicher erscheint.

SQL Grundkurs 1: Die Sprache erlernen

Arbeiten Sie sich in die Grundlagen der Datenbanksprache SQL am Beispiel von Microsoft SQL Server, Oracle und MySQL ein und lassen Sie sich die praktische Nutzung erklären.

14 Std. 40 min (112 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!