sql2005新特性,专为统计而用,直接给个实例吧。

准备数据如下:

 

View Code
create table store
(id 
int identity(1,1),
productid 
int,
storeid 
char(1),
num 
int
insert store(productid,storeid,num) select 1,'A',6
union all select 1,'B',7
union all select 2,'A',8
union all select 2,'B',9

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进行合计的

Tsql统计之一(cube,rollup入门)

2)换下productid,storeid位置

select productid,storeid,sum(num) as '数量'  from store group by storeid,productid with rollup

结果如下:是按照storeid进行合计

Tsql统计之一(cube,rollup入门)

cube应用:

select productid,storeid,sum(num) as '数量' from store group by productid,storeid with cube

结果如下:可以看出多了两行

NULL A 14
NULL B 16,除了按productid合计后,也对storeid进行了合计

Tsql统计之一(cube,rollup入门)

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

Tsql统计之一(cube,rollup入门)

相关文章:

  • 2022-12-23
  • 2021-09-07
  • 2021-08-27
  • 2021-08-03
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-24
  • 2022-02-01
  • 2022-02-21
  • 2021-07-18
相关资源
相似解决方案