如何使用SQL带来每个ID的后5个寄存器?

问题描述 投票:0回答:1

我有一张带有采购记录表。自2010年以来,这里有一家宠物店的所有购买记录。我需要一些帮助才能使每个客户只购买最后五笔。

我正在尝试,但是没有用。它带给我所有表的后5个寄存器,而不是每个客户端的后5个寄存器。

SELECT TOP (5) [client_name],
        [purchase_date],
        [item]
FROM [Pet_Shop]
ORDER BY client_name 
WHERE client_name in ('John', 'Mary', 'Austin')

我需要这种回报:

client_name | purchase_date | item 
___________________________________
John        | 2019-09-14    | food
John        | 2019-09-13    | ball
John        | 2019-09-12    | shampoo
John        | 2019-09-11    | cookie
John        | 2019-09-11    | food
Mary        | 2019-09-14    | collar
Mary        | 2019-07-14    | food
Mary        | 2019-06-14    | toy
Mary        | 2019-06-14    | hamster
Mary        | 2019-05-14    | food
Austin      | 2019-09-18    | food
Austin      | 2019-09-11    | collar
Austin      | 2019-09-10    | toy
Austin      | 2019-09-09    | catnip
Austin      | 2019-09-11    | food
sql sql-server tsql greatest-n-per-group
1个回答
1
投票

使用ROW_NUMBER()

© www.soinside.com 2019 - 2024. All rights reserved.