ISNULL(Sum(Case When) 返回 null 而不是 sum

ISNULL(Sum(Case When ) returning the null instead of sum

我正在尝试从一个时间单位列中得到一列 return 一周的总小时数。但是,它只是 returning 一个空值,我不确定为什么。有人能帮忙吗?提前致谢!

SELECT
[Employee Name],

[Week1] = ISNULL(SUM(CASE WHEN tdate BETWEEN DATEADD(Week,-3,Timesheetdate) AND DATEADD(DAY,-1,DATEADD(WEEK,-2,Timesheetdate))   THEN (Units) END),0 )

[Week2] = ISNULL(SUM(CASE WHEN tdate BETWEEN DATEADD(Week,-2,Timesheetdate) AND DATEADD(DAY,-1,DATEADD(WEEK,-1,Timesheetdate))   THEN (Units) END),0 )

From #Temp
LEFT JOIN TransTable ON TranTable.trankey = Timesheet.tkey

Group By 
EmployeeName,
tdate,
tunits,
timesheetdate
DROP TABLE #Temp
CREATE TABLE #Temp ( [EmployeeName] varchar(100),  Timesheetdate datetime , Units int , tdate datetime)


insert into #Temp values ( 1, '2015-03-02',1,'2015-03-02')
insert into #Temp values ( 1, '2015-02-02',2,'2015-02-02')
insert into #Temp values ( 1, '2015-02-02',3,'2015-02-02')
insert into #Temp values ( 1, '2015-02-27',4,'2015-02-02')
insert into #Temp values ( 1, '2015-03-24',5,'2015-02-02')

insert into #Temp values ( 1, '2015-03-02',1,'2015-02-15')
insert into #Temp values ( 1, '2015-02-02',2,'2015-02-17')
insert into #Temp values ( 1, '2015-02-02',3,'2015-02-18')
insert into #Temp values ( 1, '2015-02-27',4,'2015-02-20')
insert into #Temp values ( 1, '2015-03-24',5,'2015-02-14')

insert into #Temp values ( 1, '2015-03-02',1,'2015-02-28')
insert into #Temp values ( 1, '2015-02-02',2,'2015-02-27')
insert into #Temp values ( 1, '2015-02-02',3,'2015-02-26')
insert into #Temp values ( 1, '2015-02-27',4,'2015-02-25')
insert into #Temp values ( 1, '2015-03-24',5,'2015-02-24')

insert into #Temp values ( 1, '2015-03-02',1,'2015-02-21')
insert into #Temp values ( 1, '2015-02-02',2,'2015-02-20')
insert into #Temp values ( 1, '2015-02-02',3,'2015-02-18')
insert into #Temp values ( 1, '2015-02-27',4,'2015-02-20')
insert into #Temp values ( 1, '2015-03-24',5,'2015-02-18')


SELECT
EmployeeName,
[Week1] = ISNULL(SUM(CASE WHEN tdate BETWEEN DATEADD(Week,-3,Timesheetdate) AND DATEADD(DAY,-1,DATEADD(WEEK,-2,Timesheetdate))   THEN (Units) ELSE 0 END),0 ),

[Week2] = ISNULL(SUM(CASE WHEN tdate BETWEEN DATEADD(Week,-2,Timesheetdate) AND DATEADD(DAY,-1,DATEADD(WEEK,-1,Timesheetdate))   THEN (Units) ELSE 0 END),0 )

From #Temp
GROUP BY EmployeeName

它似乎工作得很好,我所做的一切我都添加了 ELSE 0(这不是必需的,因为没有它它也工作得很好)。

仔细查看您的日期。也许它应该 return null