Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL Developer-CASE语句,用于在满足条件时为ID返回多行_Sql_Oracle - Fatal编程技术网

Oracle SQL Developer-CASE语句,用于在满足条件时为ID返回多行

Oracle SQL Developer-CASE语句,用于在满足条件时为ID返回多行,sql,oracle,Sql,Oracle,我对CASE语句有一个问题,我正在检查两个名为primary_code和/或secondary_code的字段。一个或另一个总是会被填充,但有时两者都会被填充,问题就在这里。填充这两个字段时,我需要结果显示案例ID的两行。一行为1,另一行为2。有关更多详细信息,请参见下文 SELECT CASE_ID, CASE WHEN PRIMARY_CODE IS NOT NULL AND SECONDARY_CODE IS NULL THEN 1 WHEN SECO

我对CASE语句有一个问题,我正在检查两个名为primary_code和/或secondary_code的字段。一个或另一个总是会被填充,但有时两者都会被填充,问题就在这里。填充这两个字段时,我需要结果显示案例ID的两行。一行为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 555需要有两条记录,因为主字段和辅助字段都不为空。有人知道应该如何在Oracle SQL developer tool中执行此操作吗?

您不需要
case
,您需要一个join或union all。我怀疑你想要:

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;