Delen via


Een tabel draaien in SQL Server

In dit artikel wordt beschreven hoe u een tabel draait in SQL Server.

Oorspronkelijke productversie: SQL Server
Oorspronkelijk KB-nummer: 175574

Samenvatting

In dit artikel wordt beschreven hoe u een SQL Server-tabel draait. Stel dat u een tabel hebt met de naam QTRSALES. De tabel bevat de kolommen YEARen QUARTERAMOUNT met de gegevens in de volgende indeling.

Notitie

Er is geen rij voor het vierde kwartaal van 1996:

Year Kwartaal Bedrag
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

Stel nu dat u de tabel wilt draaien, zodat u de gegevens in de volgende indeling kunt zien:

YEAR Q1 Q2 K3 K4
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

De query die u zou gebruiken om de tabel te draaien, vindt u in de volgende sectie van dit artikel.

Voorbeeldquery om de tabel te draaien

Dit is de query die u zou gebruiken om de tabel te draaien:

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

Query uitvoeren op grote tabellen

Voor grote tabellen is deze query sneller:

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

Verwijzing

FROM - PIVOT en UNPIVOT gebruiken