Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在sql中检索上月最新日期和本月最新日期_Sql_Oracle - Fatal编程技术网

如何在sql中检索上月最新日期和本月最新日期

如何在sql中检索上月最新日期和本月最新日期,sql,oracle,Sql,Oracle,预期产出: 我需要查看一行中的数据,获取最新的seq no details和lastusagedate作为之前的seq no 9 LastDate 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',12345

预期产出: 我需要查看一行中的数据,获取最新的seq no details和lastusagedate作为之前的seq no 9 LastDate

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  
我的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

这将lastusagedate设置为null。但是我应该得到之前的seq max事件日期。有人能帮我吗:

你可以尝试以下方法:

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

请标记使用的数据库管理系统。当涉及到日期/时间时,它们中的太多都远远不符合ANSI SQL…”根据sysdate和varchar2的用法添加了oracle标记
select
    ce.account,
    ce.IMSI,
    ce.seqno,
    ce.package_id,
    (
      select 
          max(prev_seq_date_ivw.event_date) ev_date 
        from 
          imsi_data prev_seq_date_ivw 
        where 
          prev_seq_date_ivw.seqno = (
            select 
                max(prev_seq_ivw.seqno) 
              from 
                imsi_data prev_seq_ivw 
              where 
                prev_seq_ivw.seqno < ce.seqno
          )
    ) last_usage_date,
    max(ce.event_date) current_usage_date
  from imsi_data ce
  where ce.account = '10001' and ce.seqno in (10, 09)
  group by     
    ce.account,
    ce.IMSI,
    ce.seqno,
    ce.package_id;