多条件Case When表达式编写咨询:多字段为空时计算日期差
解决三个字段均为空时计算天数差的CASE语句问题
嗨,我来帮你梳理这个逻辑~ 你的核心需求是只有当x、y、z三个字段全部为空时,才计算指定日期到当前的天数差,但你现在写的CASE语句逻辑是“只要其中某一个字段为空”就执行计算,这和你的需求不符哦。
问题所在
你当前的代码片段里,每个WHEN是独立判断单个字段是否为空,这会导致只要三个字段里有任意一个为空,就会触发天数计算——但你要的是三个字段同时为空才执行这个操作。
正确的写法
你需要把三个字段为空的条件用AND组合在同一个WHEN里,这样只有当所有条件都满足时,才会执行THEN里的逻辑:
CASE -- 把三个字段的空判断用AND连接,确保同时为空 WHEN UnderwritingSuspendedDate IS NULL AND Milestoneapprovedwithconditions IS NULL AND [你的第三个字段名] IS NULL -- 替换成你实际的第三个字段(比如z对应的字段) THEN DATEDIFF(dd, SubmittedToUnderwritingDate, GETDATE()) -- 如果需要处理“不满足三个都为空”的情况,可以加ELSE分支,比如: -- ELSE NULL 或者返回其他默认值 END
补充说明
AND是逻辑“与”运算符,只有当所有连接的条件都为真时,整个判断才成立,完美匹配你“三个字段均为空”的要求。- 如果后续还有其他分支逻辑(比如某两个字段为空时的处理),可以继续在CASE语句里添加新的
WHEN分支,但要注意分支的顺序(CASE是按顺序匹配,第一个满足的分支会被执行)。
内容的提问来源于stack exchange,提问作者Josh Briggs
相关产品推荐
相关产品推荐

