我在Access数据库(从外部源导入 - 经常导入)中有下表(称之为tblGifts):
Person____GiftDate___GiftAmount
A________6/4/2014____$20
A________7/1/2014____$20
B________7/1/2014____$30
B________7/4/2014____$20
有一个用户表单提示用户输入日期范围。我希望只有当所有GiftDates都在提供的日期范围内时,才可以将GiftAmount列相加。因此,例如,如果用户提供2014年6月30日至2014年7月10日,则输出将类似于:
Person____GiftAmount
B________$50
因为他有一个超出范围的GiftDate,所以不会包括A人。
我正在考虑做以下事情:(这显然不会起作用,因为它也吸引了A人)
SELECT Person, Sum(GiftAmount)
FROM tblGifts
WHERE GiftDate Between [Forms]![InputForm]![BeginDate] And [Forms]![InputForm]![EndDate]
GROUP BY Person
答案 0 :(得分:5)
您只需要添加一个WHERE子句,排除在日期范围之外捐赠的人。
SELECT Person, Sum(GiftAmount)
FROM tblGifts
WHERE Person NOT IN (
SELECT Person FROM tblGifts
WHERE GiftDate > [Forms]![InputForm]![EndDate]
OR GiftDate < [Forms]![InputForm]![StartDate]
)
GROUP BY Person