Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

SQL Grundkurs 1: Die Sprache erlernen

Einfache Kreuztabelle

Testen Sie unsere 2017 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
In SQL gibt es direkt keine integrierte Möglichkeit, eine Kreuztabelle zu erzeugen. Mit einer Gruppierung und durch geschickten Einsatz von CASE können Sie einfache Kreuztabellen dennoch realisieren. Dieses Video gibt Ihnen die Anleitung dazu.

Transkript

In diesem Video möchte ich Ihnen zeigen, wie Sie eine einfache Kreuztabellenfunktionalität in SQL bewerkstelligen. SQL enthält leider direkt keine Möglichkeit, eine Pivot- oder Kreuztabelle zu erzeugen. Wenn wir also zum Beispiel wissen möchten, wie viele Mitarbeiter es je Geschlecht pro Abteilung gibt, könnten wir zum Beispiel nach beiden, nämlich der Abteilung und dem Geschlecht, gruppieren. Wenn wir das hier tun und uns das Ergebnis ansehen, bekommen wir etwas präsentiert, das nicht wirklich gut lesbar ist. Wir sehen hier in der Abteilung Controlling, Geschlecht 2 ist männlich, also gibt es zwei Herren. Im Einkauf gibt es 1 (steht für weiblich), also zwei Damen und einen Herrn. Sie merken alleine, wie ich hier herumstottere beim Interpretieren dieses Ergebnisses. Das ist ganz, ganz schlecht lesbar und interpretierbar. Es wäre viel schöner, wenn wir den Abteilungsnamen hätten, dann eine Spalte "Damen", eine Spalte "Herren" und eine Spalte Gesamt. Wie können wir das realisieren? Wir müssen uns also Spalten berechnen, die uns einerseits nur die Damen und nur die Herren ausgeben. Dadurch können wir das Ganze trennen. Was wäre die Grundidee? Die Grundidee ist: Wir holen uns aus der Personaltabelle die Spalten "Geschlecht". Um das zu demonstrieren, hole ich einerseits hier den Nachnamen und hole mir separat in einer Spalte den Hinweis, ob es sich um eine Dame handelt, und in einer zweiten Spalte, ob es sich um einen Herrn handelt. Dazu verwende ich die Anweisung "Case when". Und ich nehme die Bedingung, dass wenn das Geschlecht = 1 ist, dann soll der Name symbolisch angekreuzt werden, deshalb verwende ich hier ein X. Wenn diese Bedingung nicht wahr ist, wird hier "Nall" ausgegeben, "S" und das definiere ich als Damen. Dasselbe mache ich darunter noch einmal für die Herren, also wenn Geschlecht = 2, dann soll in dem Fall hier ein X, also ein Kreuzchen hingemacht werden: and S Herren. Wenn wir uns dieses Ergebnis ansehen, werden Sie erkennen, worauf ich hinaus will. Ein kleiner Fehler ist mir hier passiert. Um das besser darzustellen, sollte ich natürlich den Vornamen und nicht den Nachnamen verwenden, deshalb bessere ich das noch aus. Jetzt sehen wir hier: Vorname Gernot, Name Nein, aber bei Herren haben wir einen Kreuz, das Gleiche bei Martin. Bei Bernadette und Maren hingegen haben wir das Kreuz bei den Damen. Lorenz bei den Herren und so weiter. Was können wir nun tun? Wir können hier jeweils die Abteilung hinzufügen und nach der Abteilung gruppieren. Danach müssen wir sozusagen nur die X zählen. Wir wissen ja, dass Count "Nall"-Werte ignoriert. Wenn wir also in dieser Spalte die X zählen, bekommen wir exakt die Anzahl der Damen. Wenn wir in dieser Spalte die X zählen, bekommen wir exakt die Anzahl der Herren. Das machen wir jetzt auch. Ich kopiere mir diese Anweisung, tausche jetzt den Vornamen gegen die Abteilung aus und kopiere nach der Abteilung "Group" bei Abteilung. Diese X möchte ich nun abzählen, also verwende ich die Gruppenfunktion "Count". Ich muss nur die Klammer schließen, bevor der Alias-Name dran kommt. Außerdem noch das Gleiche für die Spalte der Herren, dann bekomme ich die Anzahl der Herren. Führen wir einmal diese Anweisung aus. Man könnte sagen, das sieht doch gleich besser aus. Wir haben jetzt hier die gruppierte Spalte "Abteilung", wir haben hier die gezählten X für die Damen und hier die gezählten X für die Herren. Wir könnten jetzt nur noch eine Spalte "Gesamt" ergänzen, indem wir hier einfach "Count* S Gesamt" noch hinzufügen. Nun führen wir die Anweisung nochmals aus, und wir haben hier die Gesamtanzahl. Um nun ein absolutes Topergebnis zu erzielen, sollten wir noch das Abteilungskürzel durch den echten Abteilungsnamen ergänzen. Das ist eigentlich ein Kinderspiel für Sie, inzwischen, dass wir hier eine weitere Tabelle hinzujoinen, nämlich die Tabelle "Abteilungen". Natürlich vergeben wir hier sauber einen Tabellen-Alias-Namen auch für die vorhandene Tabelle Personal: on p.abtlg. = a.abteilungsnummer. Wenn wir sauber arbeiten, werden wir natürlich auch das Tabellenpräfix hier vor dem Geschlecht ergänzen. Wir werden hier "Abteilung" ersetzen durch den Langtext, in der Spalte a.text als "Abteilung". Wenn wir das tun, müssen wir natürlich darauf achten, dass wir auch die "Group by"-Klausel anpassen und hier anstelle von "Abteil G" jetzt hier auch den Abteilungstext ergänzen. Außerdem sortiere ich das Ganze noch nach der Abteilung. Betrachten wir uns das Endergebnis und mit dem können wir nun wirklich zufrieden sein. Wir haben hier den Abteilungsnamen, wir sehen die Anzahl der Damen, der Herren und das Gesamtergebnis. Sie haben nun in diesem Video gesehen, wie Sie mit ganz geringem Aufwand in einfacher Form so eine Art Pivot-Tabellen realisieren können. Worauf Sie achten müssen ist, dass Sie in jeder Spalte, die Sie hier definieren, über eine Bedingung die Sie mittels "Case" umsetzen, festlegen, dass nur jene Werte berücksichtigt werden, die in diese Spalte gehören. In unserem Fall waren es einmal die Damen und hier einmal die Herren. Damit bekommen Sie ein derartiges Ergebnis in einfacher Pivot-Form.

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!