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

 

發佈了542 篇原創文章 · 獲贊 12 · 訪問量 65萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章