我有一张桌子
Repcode ID LastUpdateDate
ABCD ADAMA 12/6/2019
EFG ERINA 13/6/2019
ABCD ADAMA 14/6/2019
TOM TERRY 12/4/2019
SAM SAMMY 12/6/2019
TOM SLIPP 24/10/2013
ABCD BALLP 22/4/2010
对于每个Repcode,我需要基于LastUpdateDate的最新ID。每个RepCode一行
Repcode ID LastUpdateDate
ABCD ADAMA 14/6/2019
EFG ERINA 13/6/2019
SAM SAMMY 12/6/2019
TOM TERRY 12/4/2019
Repcode被重复使用,因此基础ID可能会随时间变化。
WITH summary AS (
SELECT m.*,
ROW_NUMBER() OVER(ORDER BY m.lastupdatedate DESC) AS rank
FROM Mtable m
)
SELECT distinct s.repCode, s.id, LastUpdateDate
FROM summary s
但是我没有得到像我期望的那样简洁的结果,只是基于最大的lastupdatedate的最新的repcode / id。请帮忙,谢谢!!!
答案 0 :(得分:2)
您不希望select distinct
。您需要一个where
子句和一个PARTITION BY
子句:
WITH summary AS (
SELECT m.*,
ROW_NUMBER() OVER (PARTITION BY m.repcode ORDER BY m.lastupdatedate DESC) AS rank
FROM Mtable m
)
SELECT s.repCode, s.id, LastUpdateDate
FROM summary s
WHERE rank = 1;
答案 1 :(得分:0)
不存在:
publish_actions
答案 2 :(得分:0)
您可以尝试在max上使用内部联接
select m.*
from Mtable m
inner join (
select Repcode, ID, max(LastUpdateDate ) max_date
from Mtable
group by Repcode, ID
) t on t.Repcode = m.Repcode
and t.id = m.id
and t.max_date = m.LastUpdateDate
答案 3 :(得分:0)
带有GROUP BY
和HAVING
子句:
SELECT * FROM summary GROUP BY Repcode HAVING MAX(LastUpdateDate)