[英]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.