多个表连接并应用大小写

时间:2017-12-08 04:20:11

标签: sql oracle tibero

我试图在短语中使用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并加入这两个表

1 个答案:

答案 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分配中您必须VARCHARELSE