Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Sie eine Tabelle in SQL Server drehen.
Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 175574
Zusammenfassung
In diesem Artikel wird beschrieben, wie Sie eine SQL Server-Tabelle drehen. Angenommen, Sie haben eine Tabelle mit dem Namen QTRSALES
. Die Tabelle enthält die Spalten YEAR
und QUARTER
AMOUNT
die Daten im folgenden Format.
Notiz
Es gibt keine Zeile für das vierte Quartal 1996:
Jahr | Quarter | Dauer |
---|---|---|
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 drehen, damit die Daten im folgenden Format angezeigt werden:
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 Drehen der Tabelle verwenden würden, befindet sich im nächsten Abschnitt dieses Artikels.
Beispielabfrage zum Drehen der Tabelle
Dies ist die Abfrage, die Sie zum Drehen 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