首页 > 开发 > 综合 > 正文

如何使用分析函数进行行列转换

2024-07-21 02:41:11
字体:
来源:转载
供稿:网友
    经常有朋友问到行列转换的问题,留言板上也有这样的提问。

    其实使用分析函数进行处理是很好的方式,翻一下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 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 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-

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表