隨筆-16  評論-84  文章-1  trackbacks-0
          SQL code
          with rollup 、with cube、grouping CUBE 和 ROLLUP 之間的區別在于: CUBE 生成的結果集顯示了所選列中值的所有組合的聚合。 ROLLUP 生成的結果集顯示了所選列中值的某一層次結構的聚合。 grouping: 當用 CUBE 或 ROLLUP 運算符添加行時,附加的列輸出值為1,當所添加的行不是由 CUBE 或 ROLLUP 產生時,附加列值為0。 --例如 DECLARE @T TABLE(名稱 VARCHAR(1) , 出版商 VARCHAR(10), 價格1 INT, 價格2 INT) INSERT @T SELECT 'a', '北京', 11, 22 UNION ALL SELECT 'a', '四川', 22, 33 UNION ALL SELECT 'b', '四川', 12, 23 UNION ALL SELECT 'b', '北京', 10, 20 UNION ALL SELECT 'b', '昆明', 20, 30 SELECT 名稱, 出版商, SUM(價格1) AS 價格1, SUM(價格2) AS 價格2, GROUPING(名稱) AS CHECK名稱, GROUPING(出版商) AS CHECK出版商 FROM @T GROUP BY 名稱,出版商 WITH CUBE /* 名稱 出版商 價格1 價格2 CHECK名稱 CHECK出版商 ---- ---------- ----------- ----------- ------- -------- a 北京 11 22 0 0 a 四川 22 33 0 0 a NULL 33 55 0 1 b 北京 10 20 0 0 b 昆明 20 30 0 0 b 四川 12 23 0 0 b NULL 42 73 0 1 NULL NULL 75 128 1 1 NULL 北京 21 42 1 0 NULL 昆明 20 30 1 0 NULL 四川 34 56 1 0 (所影響的行數為 11 行) */ --分析 /*group by 兩列:名稱有兩個類別A,B;所有由CUBE運算而生成行的是 名稱 出版商 價格1 價格2 CHECK名稱 CHECK出版商 ---- ---------- ----------- ----------- ------- -------- a NULL 33 55 0 1 b NULL 42 73 0 1 出版商有三個類別,所有由CUBE運算而生成行的是 名稱 出版商 價格1 價格2 CHECK名稱 CHECK出版商 ---- ---------- ----------- ----------- ------- -------- NULL 北京 21 42 1 0 NULL 昆明 20 30 1 0 NULL 四川 34 56 1 0 以及 NULL NULL 75 128 1 1 */ SELECT 名稱, 出版商, SUM(價格1) AS 價格1, SUM(價格2) AS 價格2 FROM @T GROUP BY 名稱,出版商 WITH ROLLUP /* 名稱 出版商 價格1 價格2 ---- ---------- ----------- ----------- a 北京 11 22 a 四川 22 33 a NULL 33 55 b 北京 10 20 b 昆明 20 30 b 四川 12 23 b NULL 42 73 NULL NULL 75 128 */
          posted on 2009-08-17 09:51 absolute 閱讀(17364) 評論(0)  編輯  收藏 所屬分類: DataBase
          主站蜘蛛池模板: 吉林市| 醴陵市| 磴口县| 商河县| 芷江| 张家界市| 甘肃省| 安塞县| 佛山市| 沾益县| 渑池县| 马鞍山市| 商水县| 邯郸县| 大新县| 汤阴县| 秀山| 日土县| 双鸭山市| 凉山| 洞头县| 新晃| 祁东县| 贵德县| 桦川县| 万盛区| 永胜县| 澜沧| 图木舒克市| 广丰县| 南丰县| 尉氏县| 京山县| 渝中区| 利川市| 江西省| 正定县| 望谟县| 垦利县| 博野县| 昌黎县|