我有一张表Abc
Id Date status
C01 Jul 3 A
C02 Jul 5 B
C03 Jul 9 A
C02 Jul 9 A
C05 Jul 3 C
C02 Jul 3 C
C03 Jul 12 C
C05 Jul 13 A
我想要过滤此表 然后出去......
Id Date Status
C01 Jul 3 A
C02 Jul 9 A
C03 Jul 12 C
C05 Jul 13 A
答案 0 :(得分:1)
如果您的Date
列的数据类型为date而不是字符串,则可以执行此操作。
select *
from
(
select *,
row_number() over(partition by Id order by Date desc) as rn
from Abc
) as T
where T.rn = 1
答案 1 :(得分:0)
如果您group by
您的身份和状态,则无法获得预期的输出。您需要为每个ID获取max date
,并通过Join
Select T1.Id, T1.Date, T2.Status from
(select Id, max(Date) as 'Date'
from Abc group by Id) T1
INNER JOIN Abc T2 on T1.Id = T2.Id and T1.Date = T2.Date order by Id asc
如果一个Id有两个等于dates
,则可能会失败,但如果您正在查看Max
这不应该发生。 (或者我们需要更多信息才能知道在这种情况下要做什么)