2014-04-01 31 views
0

我有一个CASE语句的问题,我在这里检查两个名为primary_code和secondary_code的字段。其中一个或另一个将总是人口稠密,但有时候这两者都将是这个问题。当两个字段填充时,我需要结果显示案例ID的2行。一个用1,另一个用2. 2.见下面的更多细节。Oracle SQL Developer - CASE声明在符合条件时返回一个ID的多行

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开发者工具中完成?

回答

2

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

PERFECT !!!!!!!!!!!!!!!!!!非常感谢Gordon !!!!! –