-1
create table imsi_data(account varchar2(20)not null,imsi number(10),seqno number(20) not null,package_id number(10),event_date date)
insert into imsi_data values('10001',123456,09,164,add_months((sysdate),-2));
insert into imsi_data values('10001',123456,09,164,add_months((sysdate-1),-2));
insert into imsi_data values('10001',123456,09,164,add_months((sysdate-2),-2));
insert into imsi_data values('10001',123456,10,165,add_months((sysdate),-1));
insert into imsi_data values('10001',123456,10,165,add_months((sysdate-1),-1));
insert into imsi_data values('10001',123456,10,165,add_months((sysdate-2),-1));
select * from imsi_data
ACCOUNT IMSI SEQNO PACKAGE_ID EVENT_DATE
1 10001 123456 9 164 9/4/2015 4:17:06 AM
2 10001 123456 9 164 9/3/2015 4:17:18 AM
3 10001 123456 9 164 9/2/2015 4:18:16 AM
4 10001 123456 10 165 10/4/2015 4:18:34 AM
5 10001 123456 10 165 10/3/2015 4:23:23 AM
6 10001 123456 10 165 10/2/2015 4:23:31 AM
预期输出: 我需要看到一个行的数据,获取最新的序列编号的详细信息和lastusagedate(如以前的SeqNo(9)最新日期)如何检索上月最新日期和当月最新的日期在SQL
ACCOUNT IMSI SEQNO PACKAGEID LastUsageDate CurrentUsageDate
10001 123456 10 165 9/4/2015 4:17:06 AM 10/4/2015 4:18:34 AM
我的SQL是在这里:
select account,
imsi,
lastusage_date,
current_date,
package_id,
seqno
from (
select ce.package_id,
ce.seqno,
ce.account,
ce.IMSI,
lag(ce.event_date) over(partition by ce.IMSI, ce.seqno order by ce.IMSI, ce.event_date desc) lastusage_date,
ce.event_date current_date,
row_number() over(partition by ce.imsi, ce.seqno order by ce.event_date desc) rn
from imsi_data ce
where ce.account = '10001' and ce.seqno in (10, 09)
group by ce.account, ce.seqno, ce.imsi, ce.event_date, ce.package_id)
where rn =1
这是越来越lastusagedate为空。但我应该得到的以前的序列最大EVENT_DATE任何一个可以请帮我出:
请标记使用DBMS。 (当涉及到日期/时间时,它们中的很多与ANSI SQL不兼容)' – jarlh
根据sysdate和varchar2的用法添加了'''标记 –