我有一个包含以下数据的表:
create table tempdata(account varchar2(20)not null,bookid number(10),seqno number(20) not null,book_date date, book1 number(10),
book2 number(10),book3 number(10))
insert into tempdata values('123',101,09,add_months((sysdate),-1),100,120,130);
insert into tempdata values('123',101,10,sysdate),70,60,100)
select * from tempdata;
ACCOUNT BOOKID SEQNO BOOK_DATE BOOK1 BOOK2 BOOK3
123 101 9 9/22/2015 10:05:28 AM 100 120 130
123 101 10 10/22/2015 10:01:42 AM 70 60 100
Run Code Online (Sandbox Code Playgroud)
我需要输出类似下面的内容,以便创建另一个临时表,其中包含最新的书籍详细信息,包括上一个日期和最新日期:
ACCOUNT BOOKID SEQNO Previous_DATE Latest_date BOOK1 BOOK2 BOOK3
123 101 10 9/22/2015 10:05:28 AM 10/22/2015 10:01:42 AM 70 60 100
Run Code Online (Sandbox Code Playgroud)
在这里,我假设您需要唯一account和bookid组合的数据。
SELECT T1.ACCOUNT, T1.BOOKID, T1.SEQNO,T1.PREVIOUS_DATE,
T1.BOOK_DATE AS LATEST_DATE , T1.BOOK1, T1.BOOK2, T1.BOOK3
FROM (
SELECT T.* ,ROW_NUMBER() OVER (PARTITION BY ACCOUNT,bookid ORDER BY BOOK_DATE desc) as rno,
LAG(TO_CHAR(BOOK_DATE), 1, 0) OVER (ORDER BY BOOK_DATE) AS PREVIOUS_DATE
FROM TEMPDATA T) T1
WHERE T1.RNO =1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |