SQL 查询和优化(七)
来源:互联网 发布:淘宝外卖网址 编辑:程序博客网 时间:2024/06/06 03:18
行转列
常用方法有CASE WHEN THEN 和 PIVOT函数两种方法
查询需要,对emp表按job分组汇总,每个部门显示为一列
SELECT job AS 工作, SUM (CASE deptno WHEN '10' THEN sal END) AS 部门10工资 SUM (CASE deptno WHEN '20' THEN sal END) AS 部门20工资 SUM (CASE deptno WHEN '30' THEN sal END) AS 部门30工资 SUM (sal) AS 总工资 FROM emp GROUP BY job ORDER BY 1;
PIVOT方法相对简单,语法如下SELECT .... FROM <table-expr> PIVOT ( aggregate-function(<column>) FOR <pivot-column> IN (<value1>, <value2>,..., <valuen>) ) AS <alias> WHERE ..... 实例SELECT * FROM (SELECT job,deptno,sal FROM emp) POVIT ( SUM(sal) AS s FOR deptno IN(10 AS d10,20,30 AS d30) )ORDER BY 1;
如果还要增加提成的返回,用PIVOT则只需要增加一个设定SELECT * FROM (SELECT job,deptno,sal,comm FROM emp) POVIT ( SUM(sal) AS s,SUM(comm) AS c FOR deptno IN(10 AS d10,20,30 AS d30) )ORDER BY 1;
而CASE WHEN THEN则要增加三个语句SELECT job AS 工作, SUM (CASE deptno WHEN '10' THEN sal END) AS 部门10工资 SUM (CASE deptno WHEN '20' THEN sal END) AS 部门20工资 SUM (CASE deptno WHEN '30' THEN sal END) AS 部门30工资 SUM (CASE deptno WHEN '10' THEN comm END) AS 部门10提成 SUM (CASE deptno WHEN '20' THEN comm END) AS 部门20提成 SUM (CASE deptno WHEN '30' THEN comm END) AS 部门30提成 FROM emp GROUP BY job ORDER BY 1;
选自《Oracle 查询优化改写技巧与案例》 有教无类 落落 著
阅读全文
0 0
- SQL 查询和优化(七)
- oracle中sql语句查询优化(七)
- SQL查询和优化(一)
- SQL查询和优化(二)
- SQL查询和优化(三)
- SQL查询和优化(四)
- SQL查询和优化(五)
- SQL查询和优化(六)
- SQL查询和优化(九)
- SQL查询和优化(十)
- SQL查询和优化(十一)
- SQL查询和优化(十二)
- SQL查询和优化(十三)
- SQL查询和优化(十五)
- SQL优化和查询(十六)
- SQL查询和优化(八)
- SQL优化和查询(十七)
- SQL查询和优化(十四)——用分析函数优化标量子查询
- QFile::write 写文件会变大的问题
- Final cut pro x& motion5 & compressor破解下载地址
- 如何使用RedisTemplate访问Redis数据结构
- python中文乱码的解决方法
- 练习 1- 8 编写一个统计空格,制表符与换行符个数的程序
- SQL 查询和优化(七)
- 理解最基本的Vue项目
- UVA
- 嵌入式学习21(C++继承)
- (4)Oracle约束
- 香蕉派或者树梅派+Kali:搭建一个偷WiFi密码的黑客站
- kotlin开发android例子-股票查询
- mac 执行brew update 报错 Error:解决,及brew 升级
- js css3仿ios toast提示。