在SQLserver中可以按照各種維度進行統計,實現與EXCLE一樣強大的功能。
--========================== --Blog:<奔跑的金魚> --Desc:<SQL統計> --Date:<2015-01-07> --========================== /*描述:不同員工在不同時間參加不同項目組中,獲得的收入*/ IF EXISTS(SELECT * FROM sysobjects where ID=OBJECT_ID(N'tb_Income') and XTYPE='U') DROP TABLE tb_Income CREATE TABLE [tb_Income] ( [TeamID] int not null, [PName] Nvarchar(20) NOT NULL, [CYear] Smallint NOT NULL, [CMonth] TinyInt NOT NULL, [CMoney] Decimal (10,2) Not Null ) ---------------------插入測試數據 INSERT [dbo].[tb_Income] SELECT 1,'荊天明',2011,2,5600 union ALL SELECT 1,'荊天明',2011,1,5678 union ALL SELECT 1,'荊天明',2011,3,6798 union ALL SELECT 2,'荊天明',2011,4,7800 union ALL SELECT 2,'荊天明',2011,5,8899 union ALL SELECT 3,'荊天明',2012,8,8877 union ALL SELECT 1,'高月',2011,1,3455 union ALL SELECT 1,'高月',2011,2,4567 union ALL SELECT 2,'高月',2011,3,5676 union ALL SELECT 3,'高月',2011,4,5600 union ALL SELECT 2,'高月',2011,5,6788 union ALL SELECT 2,'高月',2012,6,5679 union ALL SELECT 2,'高月',2012,7,6785 union ALL SELECT 2,'端木蓉',2011,2,5600 union ALL SELECT 2,'端木蓉',2011,3,2345 union ALL SELECT 2,'端木蓉',2011,5,12000 union ALL SELECT 3,'端木蓉',2011,4,23456 union ALL SELECT 3,'端木蓉',2011,6,4567 union ALL SELECT 1,'端木蓉',2012,7,6789 union ALL SELECT 1,'端木蓉',2012,8,9998 union ALL SELECT 3,'高漸離',2011,7,6798 union ALL SELECT 3,'高漸離',2011,10,10000 union ALL SELECT 3,'高漸離',2011,9,12021 union ALL SELECT 2,'高漸離',2012,11,8799 union ALL SELECT 1,'高漸離',2012,12,10002 union ALL SELECT 3,'少司命',2011,8,7896 union ALL SELECT 3,'少司命',2011,9,7890 union ALL SELECT 2,'少司命',2011,10,7799 union ALL SELECT 2,'少司命',2011,11,9988 union ALL SELECT 2,'少司命',2012,9,34567 union ALL SELECT 3,'少司命',2012,12,5609 --------------------------------查詢表中數據 select * from tb_Income/*CUBE運算符生成的結果集是多維數據集,多維數據集是事實數據的擴展,事實數據即記錄個別時間的數據,擴展建立在用戶准備分析的列上,這些列被稱為維,多維數據集是一個結果集,其中包含各緯度所有可能的交叉表格*/ ------------------------------使用單個維度進行統計 SELECT PName as 員工姓名, SUM(CMoney) 總收入 FROM tb_Income GROUP BY CUBE (PName)

------------------------------使用多個維度進行統計 SELECT TeamID As 項目組編號,PName as 員工姓名, SUM(CMoney) 總收入 FROM tb_Income GROUP BY CUBE (PName,TeamID)
上面是按照CUBE進行統計的,接下來是使用ROLLUP進行統計
-------------------------------使用ROLLUP進行統計 SELECT TeamID As 項目組編號,PName as 員工姓名, SUM(CMoney) 總收入 FROM tb_Income GROUP BY ROLLUP (PName,TeamID)
- CUBE 生成的結果集顯示了所選列中值的所有組合的聚合。
- ROLLUP 生成的結果集顯示了所選列中值的某一層次結構的聚合。