Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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