[英]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.