下面是表格和所需的输出。
我想选择 ID , 状态 和 DATE DATE 是最新日期。如果 DATE 相同,则只选择 状态 = A 的记录。
我需要能够在Teradata中使用SQL执行此操作。
表格
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
答案 0 :(得分:1)
Teradata支持语法扩展,可直接过滤窗口聚合函数的结果,而无需派生表:
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
答案 1 :(得分:0)
如何将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