我想要做的是当数字为'NULL'时,我希望它在日期列中显示昨天的日期。
Date Person Team Figure
-------------------------------------------------------
2017-09-01 00:00:00.000 Joe 1 NULL
2017-09-01 00:00:00.000 Tim 1 NULL
2017-09-01 00:00:00.000 Sam 1 NULL
2017-09-04 00:00:00.000 Ben 1 NULL
2017-09-04 00:00:00.000 Matt 1 NULL
2017-09-05 00:00:00.000 Alex 1 NULL
结果:
Date Person Team Figure
2017-09-13 00:00:00.000 Joe 1 NULL
2017-09-13 00:00:00.000 Tim 1 NULL
我试过了
DECLARE @Yesterday DATETIME
SET @Yesterday = DateAdd(DD, DateDiff(DD, 0, GETDATE())-1, 0)
CASE WHEN D.[Figure] IS NULL THEN
@Yesterday
ELSE D.[DATE] END
但我得到了这个结果
Date Person Team Figure Month (No column name)
2017-09-01 00:00:00.000 Joe 1 NULL 1125 2017-09-13 00:00:00.000
2017-09-01 00:00:00.000 Alex 1 NULL 177 2017-09-13 00:00:00.000
如何在此案例陈述的日期栏中更改此内容?
答案 0 :(得分:1)
我认为代码可能会因为你正在做的事情而略微过于复杂。我只想说:
select case when DF.[Figure] is null
then DateAdd(day,-1,getdate())
else DF.[Date]
end as [Date],...
答案 1 :(得分:0)
因此,不必直接选择日期,而是必须在以下内容中使用CASE
表达式:
SELECT CASE WHEN D.[Figure] IS NULL THEN DATEADD(DAY, -1, GETDATE())
ELSE D.[DATE]
END AS [Date],
Person,
Team,
Figure,
Month
FROM Tbl AS D
答案 2 :(得分:0)
我想要做的是当数字为'NULL'时,我希望它在日期字段中显示昨天的日期。
如果这是你想要的,那么你会这样做:
select . . .,
coalesce(figure, cast(getdate() - 1 as date)) as figure
根据您的示例数据,我不确定这是您真正想要的,但这正是您所要求的。