我正在使用SQL Server 2005.我有付款ID,用戶ID和時間戳的付款表。我想爲每個用戶查找最新的付款。這很容易搜索並找到答案。但是,我也想知道的是,如果最近的付款是用戶的第一次付款或不是。如何獲取SQL Server中每個組/分區的最大行數?
我有人數將達到每個用戶的支付如下:
SELECT
p.payment_id,
p.user_id,
ROW_NUMBER() OVER (PARTITION BY p.user_id ORDER BY p.payment_date) AS paymentNumber
FROM
payment p
,我不是做心理的飛躍,然後讓我,然後挑選每用戶最高的付款號。如果我通過使用MAX(paymentNumber)並使用user_id進行分組來使用上面的子查詢,我將失去我需要的payment_id。但是,如果我還將payment_id添加到group by子句中,那麼每回付款就回到一行。我確定我忽視了這個顯而易見的事實。任何幫助?
有桌子上所有的主鍵? – DForck42 2011-02-04 22:25:16
主鍵是payment_id。 – DaveBurns 2011-02-04 22:39:01