我有一个关于健身房管理的项目,我想查看每月付款。
例如,我想查看会员上次付款的时间,付款日期是30天,以及他的状态是否有效。
这是我的代码,但需要修复。
SELECT * FROM (
SELECT
pi.FighterID,
FName,
LName,
Convert(varchar(20),
PaymentDay,1),
PaymentDescr,
PaymentAmount,
Active,
ROW_NUMBER() OVER (PARTITION BY pi.FighterID ORDER BY PaymentDay DESC) rn
FROM
FightersInfo fi LEFT JOIN
PaymentInfo pi ON pi.FighterID = fi.FighterID
WHERE
NOT EXISTS (SELECT * FROM PaymentInfo WHERE FighterID = fi.FighterID
AND DATEDIFF(day, PaymentDay, GETDATE()) <= 30 )
AND Active =1) t
WHERE rn = 1
这只返回第一个成员。如果我删除WHERE rn =1
,则会返回所有付款。我只想要每个成员的最后一次付款。