2014-04-01 29 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 !!!!! –