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
我正在尝试从一个时间单位列中得到一列 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