我正在使用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