PIVOT 行列转置函数的使用
数据如下图,有一个需求,统计scott.emp中不同部门(deptno)的薪资(sal)总数。 如果不考虑行列转换的话,那么最基本的方法是通过deptno进行分组: SELECT deptno, SUM(sal) FROM scott.emp GROUP BY deptno; 效果如下: 如果要在一行中显示所有部门的薪资总和,那么可以使用SUM(DECODE...)这种方式: SELECT SUM(DECODE(deptno, 10, sal)) AS dept_10, SUM(DECODE(deptno, 20, sal)) AS dept_20, SUM(DECODE(deptno, 30, sal)) AS dept_30 FROM scott.emp; 效果如下: 或者是使用SUM(CASE...)这种方式做统计: SELECT SUM(CASE WHEN deptno = 10 THEN sal ELSE 0 END) AS dep_10, SUM(CASE WHEN deptno = 20 THEN sal ELSE 0 END) AS dept_20, SUM(CASE WHEN deptno = 30 THEN sal ELSE 0 END) AS dept_30 FROM scott.emp; 如果使用PIVOT的话,效果和前两种是一样的: SELECT