SQL-按日期限制加入的记录

SQL-按日期限制加入的记录,sql,sql-server,join,sum,Sql,Sql Server,Join,Sum,在MSSQL中使用两个表: 一个表[CUSTOMER],包含关于捐赠者的信息。 -相关列:[CustID],[Name] 一个表,[捐赠],包含每次捐赠的记录。 -相关列:[客户ID],[金额],[日期] 这些表共享一个键[CustID] 我想根据每个[客户ID]合计[金额] SELECT DONATION.CUSTID ,PEOPLE.NAME ,SUM (DONATION.AMOUNT) as TOTAL_DONATION FROM [dbo].[DONATION] INNER JOIN [

在MSSQL中使用两个表:

一个表[CUSTOMER],包含关于捐赠者的信息。 -相关列:[CustID],[Name] 一个表,[捐赠],包含每次捐赠的记录。 -相关列:[客户ID],[金额],[日期] 这些表共享一个键[CustID]

我想根据每个[客户ID]合计[金额]

SELECT DONATION.CUSTID
,PEOPLE.NAME
,SUM (DONATION.AMOUNT) as TOTAL_DONATION
FROM [dbo].[DONATION] INNER JOIN [dbo].[PEOPLE] ON DONATION.CUSTID = PEOPLE.CUSTID
GROUP BY
DONATION.CUSTID
,PEOPLE.NAME
HAVING SUM (DONATION.AMOUNT) > 100
即使添加HAVING子句,该查询也可以正常工作

当我想将捐款日期限制为合计添加到SELECT、GROUP BY和HAVING子句时

查询不再返回每个人的捐款总额,而是返回每个人的个人捐款,这些捐款符合条件

如何实施此日期限制?这是我加入或求和的方式还是。。。。?谢谢。

将其移至WHERE子句

这意味着什么:

- given the people who donated
- look only at data where donation date is in 2010 or later
- and within that data, show the people who donated a total of more than 100
将其移动到WHERE子句

这意味着什么:

- given the people who donated
- look only at data where donation date is in 2010 or later
- and within that data, show the people who donated a total of more than 100

修改第一个查询,如下所示:

,SUM (CASE WHEN DONATION.DATE > '1-1-2010' THEN DONATION.AMOUNT END) 
     as TOTAL_DONATION

修改第一个查询,如下所示:

,SUM (CASE WHEN DONATION.DATE > '1-1-2010' THEN DONATION.AMOUNT END) 
     as TOTAL_DONATION

除非希望每个客户每个日期有一行,否则不能按日期分组。 从捐款表中查找客户姓名如何

select Donator=从[people]中选择名称,其中[people]。custid=[generation]。custid, 卡斯蒂德 来自[捐赠] 其中[捐赠]。日期介于“2011年1月1日”和“2011年1月15日”之间 按客户ID分组
如果SUMamount>100,则不能按日期分组,除非希望每个客户每个日期有一行。 从捐款表中查找客户姓名如何

select Donator=从[people]中选择名称,其中[people]。custid=[generation]。custid, 卡斯蒂德 来自[捐赠] 其中[捐赠]。日期介于“2011年1月1日”和“2011年1月15日”之间 按客户ID分组
如果SUMamount>100

这与have中的捐赠日期具有相同的效果。仅报告特定日期后的捐赠,但没有像第一个查询中那样正确聚合。因此,它不再寻找捐款总额超过100美元的人,而是报告个人捐款,从而为一些捐赠者提供了多个列表。这与文件中的捐赠日期具有相同的效果。仅报告特定日期后的捐赠,但没有像第一个查询中那样正确聚合。因此,它不再寻找捐款总额超过100美元的人,而是报告个人捐款,从而为一些捐赠者提供了多个名单。