SQL Access,仅当另一列中的所有值都在指定范围内时,才对一列的值求和

geo*_*rey 1 sql ms-access

我在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  
Run Code Online (Sandbox Code Playgroud)

有一个用户表单提示用户输入日期范围.我希望只有当所有GiftDates都在提供的日期范围内时,才可以将GiftAmount列相加.因此,例如,如果用户将2014年6月30日提供给2014年7月10日,则输出将类似于:

Person____GiftAmount  
 B________$50  
Run Code Online (Sandbox Code Playgroud)

A人不会被包括在内,因为他有一个超出范围的GiftDate.

我正在考虑做以下事情:(这显然不起作用,因为它也拉人A)

SELECT Person, Sum(GiftAmount)
FROM tblGifts 
WHERE GiftDate Between [Forms]![InputForm]![BeginDate] And [Forms]![InputForm]![EndDate]
GROUP BY Person 
Run Code Online (Sandbox Code Playgroud)

Pol*_*haw 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
Run Code Online (Sandbox Code Playgroud)