問題: 最後の 3 つの [GiftDetails] の金額がゼロであるアクティブな [GiftPledges] をすべて見つける必要があります。
SELECT gp.PledgeId FROM GiftPledge gp
INNER JOIN GiftDetail gd ON gp.PledgeId = gd.PledgeId
WHERE gp.PledgeStatus = 'A'
GROUP BY PledgeId
HAVING COUNT(PledgeId) >= 3
これで、少なくとも 3 つの [GiftDetails] を持つすべての [GiftPledges] ができました。
SELECT TOP 3 gdi.Amt FROM GiftDetail gdi
INNER JOIN GiftHeader ghi ON gdi.GiftRef = ghi.GiftRef
WHERE gdi.PledgeId = gp.PledgeId
ORDER BY ghi.GDate DESC
これにより、特定の [GiftPledge] に関連付けられた最新の 3 つの [GiftDetails] が得られます。問題は、2 番目のクエリを合計して最初のクエリの WHERE 句の一部にする方法がわからないことです。
「Top n per Group」に関するこの記事を見つけました。それは私が向かう必要がある方向のように思えますが、正しい軌道に乗っているかどうかはわかりません。
ヘルプ、説明、または提案をいただければ幸いです。