问题:我需要找到所有具有最后三个[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

现在,我拥有至少三个[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]相关的三个最新的[GiftDetails]。问题是我不知道如何总结第二查询,并且它是第一个查询中Where子句的一部分。

我发现 本文 大约“每组最高n”, 似乎 就像我需要前进的方向一样,但我不确定自己在正确的道路上。

任何帮助,澄清或建议将不胜感激。

有帮助吗?

解决方案

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 
AND
GP.PledgeID in (
SELECT PledgeID From
(
SELECT TOP 3 gp.PledgeID, gdi.Amt  FROM GiftDetail gdi
      INNER JOIN GiftHeader ghi ON gdi.GiftRef = ghi.GiftRef
      WHERE gdi.PledgeId = gp.PledgeId
      ORDER BY ghi.GDate DESC
) x_amt 
Group By PledgeID
Having SUM(AMT) ) x_sum = 0

无论如何都这样。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top