Oracle SQL Developer-CASE语句,如果满足条件,则返回一个ID的多行

Working_at_It

我在CASE语句中遇到一个问题,在该语句中,我正在检查两个字段,即primary_code和secondary_code。一个或另一个将始终处于填充状态,但是有时两者都会存在,这就是问题所在。当两个字段都填充后,我需要结果显示案例ID的2行。一个带有1,另一个带有2。有关更多详细信息,请参见下文。

SELECT CASE_ID,
       CASE WHEN PRIMARY_CODE IS NOT NULL AND SECONDARY_CODE IS NULL THEN 1
            WHEN SECONDARY_CODE IS NOT NULL AND PRIMARY_CODE IS NULL THEN 2
       END AS XP_CODE
FROM TABLE1

满足条件时:

CASE_ID   XP_CODE    
5555555   1    
7777777   2

但是,如果对于任何给定的case_id,这两个字段都不为空,那么我需要将结果集显示为记录的两行,其中一行的值为1,另一行的值为2。

当同时填充主代码字段和辅助代码字段时,结果应如下所示:

CASE_ID   XP_CODE
5555555   1
5555555   2
7777777   2

由于主字段和次字段都不为空,因此案例ID为5555555的记录必须为两条。有谁知道如何在Oracle SQL开发人员工具中完成此操作?

戈登·利诺夫(Gordon Linoff)

您不需要case,需要全部加入或合并。我怀疑您想要:

select case_id, 1 as XP_CODE
from table1
where  PRIMARY_CODE IS NOT NULL
union all
select case_id, 2 as XP_CODE
from table1
where SECONDARY_CODE IS NOT NULL;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章