使用sql语句直接生成带有’小计’,’合计’的数据集

时间:2022-09-25 11:45:27

在软件开发过程中经常要做一些报表,而且大部分报表都需要用到根据某一列进行统计,计算出’小计’以及’合计’项目。一般来说大家都是在前台程序中进行处理,其实,用sql语句就可以很轻松的完成这个功能。
SQL> select decode(grouping(dept.dname),1,'合计:',dept.dname) dname, 2 decode(grouping(emp.job)+grouping(dept.dname),1,'小计:',emp.job) job,sum(sal) sum_sal from emp,dept 3 where emp.deptno=dept.deptno group by rollup(dept.dname,emp.job);
DNAME               JOB                    SUM_SAL
-------------- ---------               ----------
ACCOUNTING CLERK                     1300
ACCOUNTING MANAGER                 2450
ACCOUNTING PRESIDENT               5000
ACCOUNTING 小计:                        8750
RESEARCH ANALYST                     3000
RESEARCH CLERK                         800
RESEARCH MANAGER                    2975
RESEARCH 小计:                            6775
SALES CLERK                               950
SALES MANAGER                          2850
SALES SALESMAN                         5600
SALES 小计:                                  9400 
合计:                                            24925