簡體   English   中英

select 每個組的最大(日期) SQL

[英]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_idNULL

試試這個 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM