如何使用分析函数进行行列转换
浏览:87日期:2024-01-17
;经常有朋友问到行列转换的问题,留言板上也有这样的提问。 其实使用分析函数进行处理是很好的方式,翻一下Tom的书,将其中的一个例子收录在这里. 比如查询scott.emp表的用户SAL排序信息,可以使用如下查询: SQL> SELECT deptno, ename, 2 ROW_NUMBER () OVER (PARTITION BY deptno ORDER BY sal DESC) seq 3 FROM emp; DEPTNO ENAME SEQ---------- ---------- ----------10 KING 110 CLARK 210 MILLER 320 SCOTT 120 FORD 220 JONES 320 ADAMS 420 SMITH 530 BLAKE 130 ALLEN 230 TURNER 330 WARD 430 MARTIN 530 JAMES 6 14 rows selected. 再结合其他函数进行一下行列转换: SQL> select deptno, 2; max(decode(seq,1,ename,null)) highest, 3; max(decode(seq,2,ename,null)) second, 4; max(decode(seq,3,ename,null)) third 5; from ( 6; select deptno,ename, 7; row_number() over 8; (partition by deptno order by sal desc) seq 9; from emp) 10; where seq <=3 group by deptno 11; / DEPTNO HIGHEST;SECOND;;THIRD---------- ---------- ---------- ---------- 10 KING;;;;CLARK;;;MILLER 20 SCOTT;;;FORD;;;;JONES 30 BLAKE;;;ALLEN;;;TURNER; 这个结果基本上还是差强人意的。-The End-
相关文章: