我试图在短语中使用case来在连接多个表时更改结果值。
SELECT CASE WHEN CENSUS = '0' THEN 'SP_CENSUS0' END AS SP_RESULT FROM SP
SELECT CASE WHEN CENSUS = '0' THEN 'SR_CENSUS0' END AS SR_RESULT FROM SR
SP SR TARGET
------ ------ --------
CODE CODE CODE
CENSUS CENSUS
我希望加入TARGET,SP和SR这三个表 SP和SR应该执行1:1映射,并希望使用列CODE 加入。每个CENSUS colulmn可能/可能没有不同的结果。
我想要这样的东西在我的结果中
SP_RESULT SR_RESULT
-------------------------------------
1 (0)SP_CENSUS0 (0)SR_CENSUS0
2 1 4
3 2 (0)SR_CENSUS0
4 3 1
5 (0)SP_CENSUS0 5
我的结果可能有0,1,2,3,4,5,我只希望改变结果0并加入这两个表
答案 0 :(得分:1)
如果SR和SP通过TARGET
字段为1:1,CODE
有什么意义?
您可以在table.field
声明中使用case
:
select case when SP.CENSUS = '0' then 'SP_CENSUS0'
else SP.CENSUS
end as SP_RESULT,
case when SR.CENSUS = '0' then 'SR_CENSUS0'
else SR.CENSUS
end as SR_RESULT
FROM SR JOIN SP ON SR.CODE = SP.CODE
另外:注意数据类型,如果Census列是数字,则CAST
分配中您必须VARCHAR
到ELSE
。