![](/img/trans.png)
[英]Ingres SQL, find the max value of one column based on the value of another column
[英]How to find the max value in one column based on the value in another? SQL
我有一張桌子
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。 請幫助,提前謝謝!!!
您不想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;
有不存在:
select s.*
from summary s
where not exists (
select 1 from summary
where repcode = s.repcode and lastupdatedate > s.lastupdatedate
)
您可以嘗試在最大范圍內使用內部聯接
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
使用GROUP BY
和HAVING
子句:
SELECT * FROM summary GROUP BY Repcode HAVING MAX(LastUpdateDate)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.