我有一张人名的表格,我还有另一张这些人做过的承诺表。
他们可能会对第1,2,3或4项承诺提款。
每次作出质押时,都会在质押表中填写一份条目,其中包含该人的身份证和他们所做的质押号。
我想要一个查询,其中包含了对1和2作出承诺的不同人数。
如何实现这一目标?
答案 0 :(得分:1)
您可以使用EXISTS
尝试此操作SELECT COUNT(DISTINCT PersonID) DistinctCountPersons
FROM pledges p
WHERE EXISTS(SELECT * FROM pledges WHERE PersonID = p.PersonID AND ItemID = 1)
AND EXISTS(SELECT * FROM pledges WHERE PersonID = p.PersonID AND ItemID = 2)
修改强>
关于查询的第二部分,您可以尝试
SELECT p.PersonID,
pp.PersonName,
SUM(p.Pledge) TotalPledged
FROM pledges p INNER JOIN
people pp ON p.PersonID = pp.PersonID
WHERE EXISTS(SELECT * FROM pledges WHERE PersonID = p.PersonID AND ItemID = 1)
AND EXISTS(SELECT * FROM pledges WHERE PersonID = p.PersonID AND ItemID = 2)
GROUP BY p.PersonID,pp.PersonName