表TEST有两个字段
LINENO--行号
UPDATEPLAN--预计更新日
查出同一行号的最近三次预计更新日并以LINENO,UPDATEPLAN1,UPDATEPLAN2,UPDATEPLAN3的形式输出。
CREATE TABLE SCOTT.TEST
(
LINENO CHAR(20) NOT NULL,
UPDATEPLAN DATE,
CONSTRAINT TEST_PK PRIMARY KEY (LINENO)
)
使用分析函数进行处理可以使用如下查询:
SQL> select lineno,UPDATEPLAN,row_number() over (partition by lineno order by UPDATEPLAN desc) seq
from TEST
2 ;
LINENO UPDATEPLAN SEQ
----------------------- -------- ----------
1 07-11-26 1
1 06-11-26 2
1 05-11-26 3
1 04-11-26 4
2 09-12-26 1
2 09-10-26 2
2 09-09-26 3
2 09-02-27 4
再结合其他函数进行一下行列转换:
SQL> select lineno,
2 max(decode(seq,1,UPDATEPLAN,null)) UPDATEPLAN1,
3 max(decode(seq,2,UPDATEPLAN,null)) UPDATEPLAN2,
4 max(decode(seq,3,UPDATEPLAN,null)) UPDATEPLAN3
5 from (select lineno,UPDATEPLAN,row_number() over (partition by lineno order by UPDATEPLAN desc
) seq from TEST)
6 where seq <=3
7 group by lineno
8 ;
LINENO UPDATEPLAN1 UPDATEPLAN2 UPDATEPLAN3
--------------------------- -------- -------- --------
1 07-11-26 06-11-26 05-11-26
2 09-12-26 09-10-26 09-09-26
posted @ 2008-03-31 15:35
酷琳 阅读(283)
评论(0) 编辑 收藏 所属分类:
JAVA文章转载 网摘收藏