ADP(SQL SERVER)中的交叉查詢
交叉數(shù)據(jù)報表
有時候需要旋轉(zhuǎn)結(jié)果以便在水平方向顯示列,而在垂直方向顯示行。這就是所謂的創(chuàng)建 PivotTable®、創(chuàng)建交叉數(shù)據(jù)報表或旋轉(zhuǎn)數(shù)據(jù)。
假定有一個表 Pivot,其中每季度占一行。對 Pivot 的 SELECT 操作在垂直方向上列出這些季度:
Year Quarter Amount
---- ------- ------
1990 1 1.1
1990 2 1.2
1990 3 1.3
1990 4 1.4
1991 1 2.1
1991 2 2.2
1991 3 2.3
1991 4 2.4
生成報表的表必須是這樣的,其中每年占一行,每個季度的數(shù)值顯示在一個單獨的列中,如:
Year
Q1
Q2
Q3
Q4
1990
1.1
1.2
1.3
1.4
1991
2.1
2.2
2.3
2.4
下面的語句用于創(chuàng)建 Pivot 表并在其中填入第一個表中的數(shù)據(jù):
USE Northwind
GO
CREATE TABLE Pivot
( Year SMALLINT,
Quarter TINYINT,
Amount DECIMAL(2,1) )
GO
INSERT INTO Pivot VALUES (1990, 1, 1.1)
INSERT INTO Pivot VALUES (1990, 2, 1.2)
INSERT INTO Pivot VALUES (1990, 3, 1.3)
INSERT INTO Pivot VALUES (1990, 4, 1.4)
INSERT INTO Pivot VALUES (1991, 1, 2.1)
INSERT INTO Pivot VALUES (1991, 2, 2.2)
INSERT INTO Pivot VALUES (1991, 3, 2.3)
INSERT INTO Pivot VALUES (1991, 4, 2.4)
GO
下面是用于創(chuàng)建旋轉(zhuǎn)結(jié)果的 SELECT 語句:
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 Northwind.dbo.Pivot
GROUP BY Year
GO
該 SELECT 語句還處理其中每個季度占多行的表。GROUP BY 語句將 Pivot 中一年的所有行合并成一行輸出。當(dāng)執(zhí)行分組操作時,SUM 聚合中的 CASE 函數(shù)的應(yīng)用方式是這樣的:將每季度的 Amount 值添加到結(jié)果集的適當(dāng)列中,在其它季度的結(jié)果集列中添加 0。
如果該 SELECT 語句的結(jié)果用作電子表格的輸入,那么電子表格將很容易計算每年的合計。當(dāng)從應(yīng)用程序使用 SELECT 時,可能更易于增強 SELECT 語句來計算每年的合計。例如:
SELECT P1.*, (P1.Q1 + P1.Q2 + P1.Q3 + P1.Q4) AS YearTotal
FROM (SELECT Year,
SUM(CASE P.Quarter WHEN 1 THEN P.Amount ELSE 0 END) AS Q1,
SUM(CASE P.Quarter WHEN 2 THEN P.Amount ELSE 0 END) AS Q2,
SUM(CASE P.Quarter WHEN 3 THEN P.Amount ELSE 0 END) AS Q3,
SUM(CASE P.Quarter WHEN 4 THEN P.Amount ELSE 0 END) AS Q4
FROM Pivot AS P
GROUP BY P.Year) AS P1
GO
(責(zé)任編輯:admin)
- ·sql語句中l(wèi)ike通配符的匯總(*?!#-等含
- ·Access常用sql基本查詢語句匯總
- ·SQL查詢語句的一般格式小結(jié)
- ·聯(lián)合查詢應(yīng)用舉例1
- ·如何取消操作查詢的提示
- ·報表中先按組再按條件統(tǒng)計
- ·測試查詢速度
- ·條件選擇列求和
- ·SQL必知必會(14)NOT操作符
- ·ACCESS的參數(shù)化查詢-Access數(shù)據(jù)庫教程
- ·ACCESS的真假:四、"SELECT * INTO 工
- ·在Access中利用搜索窗體中的值生成動態(tài)
- ·Access使用查詢
- ·隨機得到Access數(shù)據(jù)庫記錄
- ·SQL 高級使用
- ·交叉表查詢中的累計