我有一个疑问。 我需要找到特定客户列表的最新情况,让我们说简化,我需要3个客户中的100个。 我需要检查他们每个人最后一次获得奖金的时间。 该表将是:
EVENT_TBL
字段:Account ID
,EVENT_DATE
,BONUS ID
,....
你能建议一种方法来获取最新的(MAX
)EVENT DATE
(这意味着每行一行)
我使用SELECT...IN
指定了帐户ID,但不确定如何使用MAX
,Group BY
等等(如果需要)。
答案 0 :(得分:4)
使用ROW_NUMBER()
分析函数:
SELECT *
FROM (
SELECT t.*,
ROW_NUMBER() OVER ( PARTITION BY Account_id ORDER BY event_date DESC ) AS rn
FROM EVENT_TBL t
WHERE Account_ID IN ( 123, 456, 789 )
)
WHERE rn = 1
答案 1 :(得分:0)
你可以尝试
with AccountID_Max_EVENT_DATE as (
select AccountID, max(EVENT_DATE) MAX_D
from EVENT_TBL
group by AccountID
)
SELECT E.*
FROM EVENT_TBL E
INNER JOIN AccountID_Max_EVENT_DATE M
ON (E.AccountID = M.AccountID AND M.MAX_D = E.EVENT_DATE)