sql - 返回所有客户的最后3笔付款

时间:2018-06-19 00:03:54

标签: sql sql-server

我有一张客户付款的表格,我想为每位用户返回最新的3笔付款。如果新客户只进行了一次购买,那么只显示一次。如果客户已经进行了50次购买,我希望根据日期查看最后3次付款。

我目前正在退回最新的付款,但无法弄清楚如何修改此显示3

c(2, 5, 2)

非常感谢任何帮助或指导。

2 个答案:

答案 0 :(得分:0)

在SQL Server中,ROW_NUMBER函数可能就是这里的方法:

SELECT [Tenant Code], [Trans Date], [Payment Amount], [Payment Type]
FROM
(
    SELECT *,
        ROW_NUMBER() OVER (PARTITION BY [Tenant Code] ORDER BY [Trans Date] DESC) rn
    FROM HIS_vw_tenant_payments
) t
WHERE rn <= 3;

答案 1 :(得分:0)

您可以使用ANSI标准`row_number()函数。像这样:

select p.*
from (select p.*,
             row_number() over (partition by [Tenant Code] order by [Trans Date] desc) as seqnum
      from HIS_vw_tenant_payments p
     ) p
where seqnum <= 3;