case when不执行,sql语句也没报错

img

img

一条sql不可以写两个case when吗,怎么第一个执行了,第二个就不执行,union all也连不起来,求解求解

你先两端分开来验证一下

第二个case少了 AS BRXZ了。导致UNION ALL两端字段名不一致

外面再套一层,去重看看BRXZ有那些值

第二句的group by 语句和查询的时候都不一致 肯定无法执行的

img

1.你这个都是一张表用两个 case when就能解决吧
2.你下面union all的 第二个字段 BRXB AS BRXB 已经定义了性别,后面的case when没有对应上字段所以不会显示,你直接用case when BRXB='1' then ‘男’ end brxb不就可以了么,union all 要满足上下查询的字段数量一致

这个两个case可以都写在里面,如下


SELECT ZYHM,
(CASE BRXB 
WHEN '1' THEN '男' 
WHEN '2' THEN '女' 
END) AS BRXB,
BRXM,
(CASE BRXA 
WHEN '1' THEN '城乡居民'
WHEN '2' THEN '职工'
WHEN '3' THEN '离休'
ELSE '其他'
END    
) AS BRXA
FROM ZY_BRRY