簡體   English   中英

為每個ROW選擇MAX值-Oracle Sql

[英]Select MAX Value for Each ROW - Oracle Sql

我有一個疑問。 我需要查找特定客戶列表的最新發生情況,為了簡化起見,我需要100個客戶中的3個。我需要檢查這是何時每個客戶最后一次獲得獎金。 該表將是:

EVENT_TBL

字段: Account IDEVENT_DATEBONUS ID ,...。

您能否提出一種獲取最新( MAXEVENT DATE (即每行一行)

我正在使用SELECT...IN來指定帳戶ID,但不確定如何使用MAXGroup BY等(如果需要)。

使用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

你可以試試

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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