SQL Server 对于空日期,我的case语句返回1900-01-01

anauzrmj  于 2023-02-15  发布在  其他
关注(0)|答案(1)|浏览(200)

我尝试返回基于不同值的2个日期列的结果,如下所示:

CASE WHEN game_startA IS NOT NULL THEN game_startA 
     WHEN game_startB IS NOT NULL THEN game_startB 
     ELSE '' 
     END AS 'Game Start Date'
,
CASE WHEN game_endA IS NOT NULL THEN game_endA 
     WHEN game_endB IS NOT NULL THEN game_endB 
     WHEN COALESCE(game_endC, game_endD) IS NOT NULL THEN COALESCE(game_endC, game_endD)
     ELSE '' 
     END AS 'Game End Date'

问题是,如果值为NULL,则返回1900-01-01,而不是NULL或空白。
有什么办法可以解决这个问题吗?

rhfm7lfc

rhfm7lfc1#

这个逻辑可以大大简化(除非比你分享的内容更多):

COALESCE(game_startA, game_startB) AS [Game Start Date],
COALESCE(game_endA, game_endB, game_endC, game_endD) AS [Game End Date]

我不认为有必要使用CASE表达式 * 或 * any ELSE来将日期转换为空字符串,如果COALESCE()到达其列表末尾,仍然没有找到非NULL值,则输出就是您想要的:NULL .

相关问题