隨筆-16  評論-84  文章-1  trackbacks-0
          SQL code
          with rollup 、with cube、grouping CUBE 和 ROLLUP 之間的區(qū)別在于: CUBE 生成的結(jié)果集顯示了所選列中值的所有組合的聚合。 ROLLUP 生成的結(jié)果集顯示了所選列中值的某一層次結(jié)構(gòu)的聚合。 grouping: 當(dāng)用 CUBE 或 ROLLUP 運算符添加行時,附加的列輸出值為1,當(dāng)所添加的行不是由 CUBE 或 ROLLUP 產(chǎn)生時,附加列值為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 (所影響的行數(shù)為 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 閱讀(17385) 評論(0)  編輯  收藏 所屬分類: DataBase
          主站蜘蛛池模板: 五指山市| 娄烦县| 织金县| 鄂托克前旗| 洛浦县| 安吉县| 九龙县| 无极县| 呼伦贝尔市| 定远县| 康马县| 安塞县| 汪清县| 根河市| 互助| 两当县| 南投市| 安塞县| 北碚区| 南安市| 于田县| 凤冈县| 漠河县| 阿克陶县| 新蔡县| 新巴尔虎左旗| 隆林| 泉州市| 咸阳市| 肇源县| 驻马店市| 盐池县| 和龙市| 紫金县| 两当县| 裕民县| 个旧市| 独山县| 瑞丽市| 长寿区| 遂平县|