[英]select max(date) for each group SQL
我有一張這樣的桌子:
QUOTE_ID CREATED_DATE CHARGE_1 CHARGE_2
2 2018-06-11 19:51:10.0 00 16
2 2017-06-11 19:51:10.0 01 16
3 2017-06-11 19:51:10.0 10 16
4 2019-06-11 19:51:10.0 20 16
4 2020-06-11 19:51:10.0 02 16
4 2017-06-11 19:51:10.0 00 16
我只想 select 每個 QUOTE_ID 具有 MAXimum CREATED_DATE 的行。
所以結果應該是這樣的:
QUOTE_ID CREATED_DATE CHARGE_1 CHARGE_2
2 2018-06-11 19:51:10.0 00 16
3 2017-06-11 19:51:10.0 10 16
4 2020-06-11 19:51:10.0 02 16
我試過這個 SQL 代碼(用 ORACLE )
SELECT tt.*
FROM CUSTOM_LIFETIME_VALUE_LOY_JOIN tt
INNER JOIN
(SELECT "QUOTE_ID", MAX("CREATED_DATE") AS MaxDateTime
FROM CUSTOM_LIFETIME_VALUE_LOY_JOIN
GROUP BY QUOTE_ID) groupedtt
ON tt.QUOTE_ID = groupedtt.QUOTE_ID
AND tt.CREATED_DATE = groupedtt.MaxDateTime
但這似乎不正確,因為我沒有得到所有 QUOTE_ID 行
有什么想法可以幫助我解決這個問題嗎?
謝謝
規范的方法是使用row_number()
:
select clv.*
from (select clv.*,
row_number() over (partition by quote_id order by created_date desc) as seqnum
from CUSTOM_LIFETIME_VALUE_LOY_JOIN clv
) clv
where seqnum = 1;
請注意,您的版本也應該可以正常工作——除非quote_id
是NULL
。
試試這個 SQL 代碼(與 ORACLE )
SELECT tt.*
FROM CUSTOM_LIFETIME_VALUE_LOY_JOIN tt
WHERE (tt.QUOTE_ID,tt.CREATED_DATE) IN
(SELECT QUOTE_ID, MAX("CREATED_DATE") AS MaxDateTime
FROM CUSTOM_LIFETIME_VALUE_LOY_JOIN
GROUP BY QUOTE_ID)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.