Drehen einer Tabelle in SQL Server
In diesem Artikel wird beschrieben, wie Sie eine Tabelle in SQL Server rotieren.
Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 175574
Zusammenfassung
In diesem Artikel wird beschrieben, wie Sie eine SQL Server Tabelle rotieren. Angenommen, Sie verfügen über eine Tabelle mit dem Namen QTRSALES
. Die Tabelle enthält die Spalten YEAR
, QUARTER
und AMOUNT
mit den Daten im folgenden Format.
Hinweis
Für das vierte Quartal 1996 gibt es keine Zeile:
Jahr | Quartal | Betrag |
---|---|---|
1995 | 1 | 125,000.90 |
1995 | 2 | 136,000.75 |
1995 | 3 | 212,000.34 |
1995 | 4 | 328,000.82 |
1996 | 3 | 728,000.35 |
1996 | 2 | 422,000.13 |
1996 | 1 | 328,000.82 |
Angenommen, Sie möchten die Tabelle rotieren, damit Sie die Daten im folgenden Format sehen können:
YEAR | Q1 | Q2 | Q3 | Q4 |
---|---|---|---|---|
1995 | 125,000.90 | 136,000.75 | 212,000.34 | 328,000.82 |
1996 | 328,000.82 | 422,000.13 | 728,000.35 | 0.00 |
Die Abfrage, die Sie zum Rotieren der Tabelle verwenden würden, finden Sie im nächsten Abschnitt dieses Artikels.
Beispielabfrage zum Rotieren der Tabelle
Dies ist die Abfrage, die Sie zum Rotieren der Tabelle verwenden würden:
SELECT YEAR,
Q1= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 1 AND YEAR =
Q.YEAR),0),
Q2= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 2 AND YEAR =
Q.YEAR),0),
Q3= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 3 AND YEAR =
Q.YEAR),0),
Q4= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 4 AND YEAR =
Q.YEAR),0)
FROM QTRSALES Q
GROUP BY YEAR
Abfrage für große Tabellen
Bei großen Tabellen ist diese Abfrage schneller:
SELECT YEAR,
SUM(CASE quarter WHEN 1 THEN amount ELSE 0 END) AS Q1,
SUM(CASE quarter WHEN 2 THEN amount ELSE 0 END) AS Q2,
SUM(CASE quarter WHEN 3 THEN amount ELSE 0 END) AS Q3,
SUM(CASE quarter WHEN 4 THEN amount ELSE 0 END) AS Q4
FROM qtrsales q
GROUP BY YEAR
Referenz
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für