首页 > 解决方案 > 在多列上具有多个条件的情况

问题描述

我试图弄清楚如何使这项工作:

CASE
   WHEN a.val IS NULL AND (a.CreatedBy <> 'MDI' OR a.Type <> 'RO' OR a.Unit <> 'ER') THEN 1
   ELSE 0 
END as field_name

基本上我正在寻找行 where a.valis null,但如果这些列(a.CreatedBya.Typea.Unit)中的任何一个具有特定值,则忽略该行。即使这些列之一对于特定值是 true,case 也应该返回0

是否可以?提前致谢。

标签: sql-servercase

解决方案


您将需要 AND 而不是 OR 运算符。

CASE    WHEN    a.val IS NULL
                AND a.CreatedBy <> 'MDI' 
                AND a.Type <> 'RO' 
                AND a.Unit <> 'ER'
        THEN 1
        ELSE 0 
END as field_name

推荐阅读