我必须根据颜色条件得到date_closed.
- >如果颜色代码为绿色,则关闭日期应显示在时间戳中
- >如果颜色代码不是绿色,则日期关闭应为null.
为此,我写了以下查询:
(CASE
WHEN A.C_STATUS = 'RD' THEN 'NULL'
ELSE (CASE WHEN A.C_STATUS = 'GR' THEN (F.T_TIMESTAMP) END)
END) AS DATE_CLOSED
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误,指出NULL不能在日期中.我的代码出了什么问题?
在单词"NULL"周围加上引号意味着您正在尝试插入一个字符串,该字符串恰好包含一个您知道应该表示NULL的单词.你真正要做的就是说它没有引号,然后SQL Server将识别为NULL而不是"带有字母的字符串"
(CASE
WHEN A.C_STATUS = 'RD' THEN NULL
ELSE (CASE WHEN A.C_STATUS = 'GR' THEN (F.T_TIMESTAMP) END)
END) AS DATE_CLOSED
Run Code Online (Sandbox Code Playgroud)
作为一个有趣的事实,如果你放弃ELSE语句,任何不适合你的CASE的东西都会自动返回NULL.阅读您的要求,实际上看起来您的代码过于复杂:我相信以下内容会返回相同的结果.
CASE WHEN A.C_STATUS = 'GR' THEN F.T_TIMESTAMP END AS DATE_CLOSED
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |