使用SQL语句生成带有小计合计的数据集:
测试用户: scott
测试用表: dept,emp
//////////////////////////////////
//检索出需要进行统计的数据集
select dept.dname,emp.job,sal from emp,dept
where emp.deptno=dept.deptno;
//////////////////////////////////
//根据部门名称以及职位进行汇总,并为每个部门
生成'小计',最后生成'合计'.
select
decode(grouping(dept.dname),1,'合计:',dept.dname)dname,
decode(grouping(emp.job)+grouping(dept.dname),1,'小计:',emp.job)job,sum(sal) sum_sal from emp,dept where emp.deptno=dept.deptno group by rollup(dept.dname,emp.job);
运行结果如下:
SQL> select dept.dname,emp.job,sal from emp,d
DNAME JOB SAL
-------------- --------- ----------
RESEARCH CLERK 800
SALES SALESMAN 1600
SALES SALESMAN 1250
RESEARCH MANAGER 2975
SALES SALESMAN 1250
SALES MANAGER 2850
ACCOUNTING MANAGER 2450
RESEARCH ANALYST 3000
ACCOUNTING PRESIDENT 5000
SALES SALESMAN 1500
RESEARCH CLERK 1100
DNAME JOB SAL
-------------- --------- ----------
SALES CLERK 950
RESEARCH ANALYST 3000
ACCOUNTING CLERK 1300
已选择14行。
SQL> select
2 decode(grouping(dept.dname),1,'合计:',de
3 decode(grouping(emp.job)+grouping(dept.d
ept where emp.deptno=dept.deptno group by rol
DNAME JOB SUM_SAL
-------------- --------- ----------
ACCOUNTING CLERK 1300
ACCOUNTING MANAGER 2450
ACCOUNTING PRESIDENT 5000
ACCOUNTING 小计: 8750
RESEARCH ANALYST 6000
RESEARCH CLERK 1900
RESEARCH MANAGER 2975
RESEARCH 小计: 10875
SALES CLERK 950
SALES MANAGER 2850
SALES SALESMAN 5600
DNAME JOB SUM_SAL
-------------- --------- ----------
SALES 小计: 9400
合计: 29025
已选择13行。
SQL>
关键词标签:SQL语句
相关阅读
热门文章 SqlServer2005对现有数据进行分区具体步骤sql server系统表损坏的解决方法MS-SQL2005服务器登录名、角色、数据库用户Access、SQL Server、Oracle常见应用的区别
人气排行 如何远程备份(还原)SQL2000数据库SQL2000数据库远程导入(导出)数据配置和注册ODBC数据源-odbc数据源配置教程SQL2000和SQL2005数据库服务端口查看或修改SQL Server 2005降级到2000的正确操作步骤修改Sql Server唯一约束教程浅谈JSP JDBC来连接SQL Server 2005的方法SQL Server创建表语句介绍
查看所有0条评论>>