繁体   English   中英

如何按日期获取表中的最新记录

[英]How to get The Most Recent Record In A Table By Date

    ID       eff_date                   term_date
-----------------------------------------------------
1   100     2013-01-01    0
2   100     2013-11-27    2017-12-31
3   101     2014-01-01    2018-12-31 
4   101     2013-11-27    2013-12-31

因此,这里有两种情况。 一种是根据term_date以及在第一行和第二行中放入最新记录,ID相同但第二行终止,而第一行则不行。 在那种情况下,我想拉不终止的行。 我知道如何根据日期提取最新记录,但是我不确定如何将记录提取为零。 提前非常感谢您。

这就是我对问题的理解(在我看来,这就像泥泞一样清晰)。

首先,将(明显的)日期值存储到VARCHAR2列中是一个坏主意。 将零放入(而不是显然没有值)也是错误的。

无论如何,这就是你所拥有的。 将任何值(代表日期)与零进行比较时,该值始终大于0,因此您可以自由地使用它。 唯一的好处是,这些“日期”以yyyy-mm-dd格式存储,这使排序更为简单。

因此,这里是:

SQL> with test (id, eff_date, term_date) as
  2    (select 100, '2013-01-01', '0'          from dual union
  3     select 100, '2013-11-27', '2017-12-31' from dual union
  4     select 101, '2014-01-01', '2018-12-31' from dual union
  5     select 101, '2013-11-27', '2013-12-31' from dual
  6    ),
  7  inter as
  8    (select id, eff_date, term_date,
  9       rank() over (partition by id order by term_date desc) rnk
 10     from test
 11    )
 12  select id, eff_date, term_date
 13  from inter
 14  where rnk = 1;

        ID EFF_DATE   TERM_DATE
---------- ---------- ----------
       100 2013-11-27 2017-12-31
       101 2014-01-01 2018-12-31

SQL>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM