在 Teradata 中,如何使用 SQL 比较多个日期和 select 最新日期?

In Teradata, with SQL, how do I compare multiple dates and select the latest date?

下面是 table 和所需的输出。

我要selectID,STATUSDATE 其中 DATE 是最新日期。如果DATE相同,只有select记录STATUS = A

我需要能够使用 SQL 在 Teradata 中执行此操作。

Table:

ID        STATUS        DATE
5550500     A          11/02/2016
5550500     I          8/08/2008
5551688     A          23/08/2013
5551688     I          23/08/1997
5551688     I          23/08/2013
5551966     I          18/10/1999
5551966     I          24/10/2003
5551966     I          10/11/1997
5551966     I          2/09/2014

要求输出:

ID        STATUS        DATE
5550500    A           11/02/2016
5551688    A           23/08/2013
5551966    I           2/09/2014

如何将 row_number 与子查询一起使用:

select *
from (
    select id, status, date, 
           row_number() over (partition by id 
                              order by date desc, status) rn
    from yourtable
) t
where rn = 1

Teradata 支持语法扩展以直接根据窗口聚合函数的结果进行过滤,而无需派生 Table:

select *
from tab
QUALIFY -- similar to HAVING after GROUP BY
   row_number() -- or RANK to return multiple rows with the same (max date & status)
   over (partition by id 
         order by date desc, status) = 1