sql2005新特性,专为统计而用,直接给个实例吧。
准备数据如下:
cube,rollup与group up结合使用,两者的区别简单的就是:
CUBE 生成的结果集显示了所选列中值的所有组合的聚合(如按group by a,b,则会产生按a,按b,按a,b组合的多种统计)。
ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。(如按group by a,b,则只产生按a,b两种统计的).
rollup应用:1)
select productid,storeid,sum(num) as '数量' from store group by productid,storeid with rollup
结果如下:是按照productid进行合计的
2)换下productid,storeid位置
select productid,storeid,sum(num) as '数量' from store group by storeid,productid with rollup
结果如下:是按照storeid进行合计
cube应用:
select productid,storeid,sum(num) as '数量' from store group by productid,storeid with cube
结果如下:可以看出多了两行
NULL A 14
NULL B 16,除了按productid合计后,也对storeid进行了合计
GROUPING作用:用你需要的 ‘合计','小计’等代替null值 ,但是要数据类型一致(红色部分注意)。
SELECT CASE WHEN (GROUPING(productid) = 1) THEN 1 ELSE ISNULL(productid,0) END AS productid,
CASE WHEN (GROUPING(storeid) = 1) THEN 'ALL' ELSE ISNULL(storeid, 'UNKNOWN') END AS storeid,
SUM(num) AS num
FROM store
GROUP BY productid, storeid WITH ROLLUP