打印本文 打印本文  关闭窗口 关闭窗口  
如何使用分析函数来进行行和列的转换
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/8 11:05:15  文章录入:杜斌  责任编辑:杜斌

  使用分析函数进行行转列的处理: 比如查询scott.emp表的用户SAL排序信息,大家可以使用下面的查询:

SQL> SELECT deptno, ename,2         ROW_NUMBER () OVER (PARTITION BY deptno ORDER BY sal DESC) seq3    FROM emp;    DEPTNO ENAME             SEQ---------- ---------- ----------        10 KING                1        10 CLARK               2        10 MILLER              3        20 SCOTT               1        20 FORD                2        20 JONES               3        20 ADAMS               4        20 SMITH               5        30 BLAKE               1        30 ALLEN               2        30 TURNER              3        30 WARD                4        30 MARTIN              5        30 JAMES               614 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      MILLER20 SCOTT      FORD       JONES30 BLAKE      ALLEN      TURNER
打印本文 打印本文  关闭窗口 关闭窗口