本文說明如何在 SQL Server 中輪替數據表。
原始產品版本:SQL Server
原始 KB 編號: 175574
摘要
本文說明如何輪替 SQL Server 數據表。 假設您有一 QTRSALES
個名為的數據表。 數據表具有數據行 YEAR
、 QUARTER
和 ,且 AMOUNT
具有下列格式的數據。
注意
1996年第四季度沒有數據列:
Year | 季 | 總數 |
---|---|---|
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 |
現在,假設您想要旋轉資料表,以便以下列格式查看資料:
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 |
您用來旋轉數據表的查詢位於本文的下一節。
旋轉數據表的範例查詢
以下是您將用來旋轉資料表的查詢:
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
查詢大型數據表
對於大型數據表,此查詢會更快:
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