SQL Server PIVOT (Deutsch)

Zusammenfassung: In diesem Lernprogramm erfahren Sie, wie Sie den SQL Server-Operator PIVOT verwenden zum Konvertieren von Zeilen in Spalten.

Einrichten der Ziele

Für die Demonstration verwenden wir production.products und production.categories Tabellen aus der Beispieldatenbank:

Die folgende Abfrage ermittelt die Anzahl der Produkte für jede Produktkategorie:

Hier ist die Ausgabe:

Unser Ziel ist es, die Kategorienamen aus der ersten Spalte der Ausgabe in mehrere Spalten umzuwandeln und die Anzahl der Produkte für jede zu zählen Kategoriename wie folgt:

Zusätzlich können wir das Modelljahr hinzufügen, um die Kategorie zu gruppieren oder nach Modelljahr, wie in der folgenden Ausgabe gezeigt:

Einführung in den SQL Server PIVOT-Operator

Der SQL Server PIVOT -Operator dreht einen Ausdruck mit Tabellenwert. Die eindeutigen Werte in einer Spalte werden in der Ausgabe in mehrere Spalten umgewandelt und es werden Aggregationen für alle verbleibenden Spaltenwerte durchgeführt.

Führen Sie die folgenden Schritte aus, um eine Abfrage zu einer Pivot-Tabelle zu machen:

  • Wählen Sie zunächst ein Basisdatensatz zum Schwenken aus.
  • Zweitens erstellen Sie ein temporäres Ergebnis mithilfe einer abgeleiteten Tabelle oder eines allgemeinen Tabellenausdrucks (CTE).
  • Wenden Sie drittens die PIVOT -Operator.

Wenden wir diese Schritte im folgenden Beispiel an.

Wählen Sie zunächst den Kategorienamen und die Produkt-ID aus dem production.products und production.categories Tabellen als Basisdaten für das Schwenken:

Erstellen Sie zweitens eine temporäre Ergebnismenge mithilfe einer abgeleiteten Tabelle:

Drittens wenden Sie den Operator PIVOT an:

Diese Abfrage generiert die folgende Ausgabe:

Nun jede zusätzliche Spalte, die Sie der Auswahlliste der Abfrage hinzufügen, die die zurückgibt Base Daten bilden automatisch Zeilengruppen in der Pivot-Tabelle. Beispielsweise können Sie der obigen Abfrage die Spalte Modelljahr hinzufügen:

Hier ist die Ausgabe:

Spaltenwerte generieren

In der obigen Abfrage mussten Sie jeden Kategorienamen in Klammern nach der IN Operator manuell. Um dies zu vermeiden, können Sie die Funktion QUOTENAME() verwenden, um die Kategorienamensliste zu generieren und über die Abfrage zu kopieren.

Generieren Sie zunächst die Kategorienamensliste:

Die Ausgabe sieht folgendermaßen aus:

In diesem Snippet:

  • Die Funktion QUOTENAME() umschließt die Kategoriename in eckigen Klammern, z. B.
  • Die Funktion LEFT() entfernt das letzte Komma aus der Zeichenfolge @columns

Kopieren Sie anschließend die Kategorienamensliste aus der Ausgabe und fügen Sie sie in die Abfrage ein.

Dynamische Pivot-Tabellen

Wenn Sie eine hinzufügen Wenn Sie einen neuen Kategorienamen in die Tabelle production.categories eingeben, müssen Sie Ihre Abfrage neu schreiben, was nicht ideal ist. Um dies zu vermeiden, können Sie dynamisches SQL verwenden, um die Pivot-Tabelle dynamisch zu gestalten.

In dieser Abfrage wird keine feste Liste von Kategorienamen an PIVOT Operator erstellen wir die Kategorienamensliste und übergeben sie an eine SQL-Anweisung. Anschließend führen wir diese Anweisung dynamisch mit der gespeicherten Prozedur sp_executesql aus.

In diesem Lernprogramm Sie haben gelernt, wie Sie mit der SQL Server-Tabelle PIVOT Zeilen in Spalten konvertieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.