繁体   English   中英

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

[英]Oracle SQL Developer - CASE Statement to return multiple rows for an ID if conditions met

我有一个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都不为null,那么我需要结果集为记录显示两行,一行的值为1,另一行的值为2。

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

CASE_ID   XP_CODE
5555555   1
5555555   2
7777777   2

由于主要和辅助字段都不为空,因此案例ID 5555555需要有两条记录。 有谁知道如何在Oracle SQL开发人员工具中完成这项工作?

你不需要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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM