我有一张桌子,上面有购买信息。它包含自2010年以来宠物店的所有购买信息。我以这种方式带来了最后5行,然后仅将最后一次购买保存在另一个表中:
SELECT *
FROM (
SELECT
client_name,purchase_date,item,payment,ROW_NUMber() OVER(PARTITION BY client_name ORDER BY purchase_date desc) rn
FROM Pet_Shop
) x
WHERE rn <= 5
ORDER BY client_name
哪个带给我
client_name | purchase_date | item | payment
_____________________________________________
John | 2019-09-14 | food | cash
John | 2019-09-13 | ball | cash
John | 2019-09-12 | shampoo| cash
John | 2019-09-11 | cookie| cash
John | 2019-09-11 | food | cash
Mary | 2019-09-14 | collar| cash
Mary | 2019-07-14 | food | cash
Mary | 2019-06-14 | toy | credit card
Mary | 2019-06-14 | hamster | cash
Mary | 2019-05-14 | food | cash
Austin | 2019-09-18 | food | cash
Austin | 2019-09-11 | collar| cash
Austin | 2019-09-10 | toy | cash
Austin | 2019-09-09 | catnip| cash
Austin | 2019-09-11 | food | cash
但是,我很难删除使用信用卡购买的客户。也就是说,如果客户在任何时候最近五次使用信用卡支付的商品中都不应列出。我尝试过类似WHERE payment like not '%card%'
的操作,但这意味着仅未出现卡注册,而随后的卡却出现了。