这是一个更大查询的一部分,但我发现这个特定部分总是返回 false?相同的表和列比较不同的记录。我正在尝试使用单例表达式检查两部分条件。任何意见表示赞赏。
CASE WHEN (CN IN ('C10302','C10002','C10602','C10702','C11002','C14002','C14082')
AND Mark NOT IN ('D-','D','D+','F','NC'))
AND (CN IN ('C10301','C10001','C10601','C10701','C11001','C14001','C14081')
AND Mark IN ('D-','D','D+','F','NC')) THEN 1
ELSE 0 END AS C2
让我详细说明一下,因为我无法解释。我正在尝试检查这两种情况是否在特定 ID 的表中共存。查询的表有三个字段,ID、CN、Mark。我正在检查是否有人有这种情况。
查看下表,情况为真并给出 1,因为两个条件都满足。
身份证 | 中国 | 马克 |
---|---|---|
20 | C10302 | C |
20 | A12520 | F |
20 | C10020 | C |
20 | C10001 | D |
我相信你正在寻找这个
所以你得到两个条件,只有一个必须为真才能得到 1
CASE WHEN ((CN IN ('C10302','C10002','C10602','C10702','C11002','C14002','C14082')
AND Mark NOT IN ('D-','D','D+','F','NC'))
OR ( CN IN ('C10301','C10001','C10601','C10701','C11001','C14001','C14081')
AND Mark IN ('D-','D','D+','F','NC'))) THEN 1
ELSE 0 END AS C2