rollup()和rollup(())的区别

引用:http://blog.csdn.net/damenggege123/article/details/38794351

使用里面的数据进行查询来区别rollup()和rollup(())的使用。

 select f_workarea, f_line, sum(f_pagesnumber) sum_pagesnumbers
   from t_testcount
  group by rollup(f_workarea, f_line);

 

返回结果

 

F_WORKAREA F_LINE SUM_PAGESNUMBERS
a	a1	1
a	a2	2
a	a3	3
a		6
b	b1	1
b		1
		7

 

上面结果存在小计和总计

 select f_workarea, f_line, sum(f_pagesnumber) sum_pagesnumbers
   from t_testcount
  group by rollup((f_workarea, f_line));

 

结果如下:       

 

F_WORKAREA F_LINE SUM_PAGESNUMBERS
a	a1	1
a	a2	2
a	a3	3
b	b1	1
		7

 上面结果里面明显没有小计,只有总计。

所以rollup()和rollup(())的区别即rollup(())只有总计而没有小计。

如果没有rollup(())怎么实现只有总计没有小计呢。

select *
  from (select grouping(f_line) as a1,
               grouping(f_workarea) as a2,
               f_workarea,
               f_line,
               sum(f_pagesnumber) sum_pagesnumbers
          from t_testcount
         group by rollup(f_workarea, f_line)) t
 where t.a1 = 0
   and t.a2 = 0
    or (t.a1 = 1 and t.a2 = 1)

 结果如下:

A1 	A2  F_WORKAREA	F_LINE	SUM_PAGESNUMBERS
0	0	a	a1	1
0	0	a	a2	2
0	0	a	a3	3
0	0	b	b1	1
1	1			7

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值