我需要帮助修改现有的case语句,该语句必须被更改以适应null值的可能性。
目前,声明如下:
CASE WHEN
DATEDIFF(dd, table.OpenDate, GetDate()) - table.Days_as_Integer) > 0 THEN
DATEDIFF(dd, table.OpenDate, GetDate()) - table.Days_as_Integer
ELSE NULL END
AS Days_Past_Due
我只想更改现有的CASE语句,以便能够处理null table.OpenDate字段,返回NULL作为Days_Past_Due。有一个简单的方法吗?
感谢!!!
答案 0 :(得分:4)
不要让你的表达更多复杂,你应该简化它:
CASE WHEN
DATEDIFF(dd, table.OpenDate, GetDate()) - table.Days_as_Integer) > 0 THEN
DATEDIFF(dd, table.OpenDate, GetDate()) - table.Days_as_Integer
END
AS Days_Past_Due
答案 1 :(得分:0)
尝试类似:
CASE
WHEN table.OpenDate IS NULL THEN NULL
WHEN DATEDIFF(dd, table.OpenDate, GetDate()) - table.Days_as_Integer) > 0 THEN
DATEDIFF(dd, table.OpenDate, GetDate()) - table.Days_as_Integer
ELSE NULL
END AS Days_Past_Due
答案 2 :(得分:0)
- 在CASE中添加一行来处理NULL表.OpenDate并将其渲染为NULL
CASE
WHEN DATEDIFF(dd, table.OpenDate, GetDate()) - table.Days_as_Integer) > 0 THEN DATEDIFF(dd, table.OpenDate, GetDate()) - table.Days_as_Integer
WHEN table.OpenDate IS NULL THEN NULL
ELSE NULL
END
AS Days_Past_Due