2013-05-03 32 views
1

對不起的標題/說明感到抱歉。發生了什麼是我通過ID加入另一個表,但數據來自兩個不同的管理系統(CLONE和GRASN)有沒有我可以添加的代碼來說「如果CLONE和GRASN存在,請使用CLONE」?SQL如果存在兩條記錄,請選擇您想要顯示哪條記錄Teradata

一個簡單的查詢,看起來像這樣:

` select sorce_claim_id 
    ,claim_sorce_syst_cd 
    ,sorce_agrmt_id 
    ,asgn_sorce_syst_cd 
    from edw_p.claim_agrmt 
    where sorce_claim_id = '4513049'` 

,並返回以下:

SORCE_CLAIM_ID CLAIM_SORCE_SYST_CD SORCE_AGRMT_ID ASGN_SORCE_SYST_CD 
4513049    NVLNK    00932419  GRASN 
4513049    NVLNK    R0035600  CLONE 

我只想拉第二個記錄。我不能只說WHERE ASGN_SORCE_SYST_CD = CLONE,因爲這隻會帶回克隆。該表格基本上由GRASN組成,但有重複的記錄(如本例中),如果存在,我想使用CLONE記錄。

我希望這樣做有足夠的意義。我在Teradata工作。

回答

4
select sorce_claim_id 
     ,claim_sorce_syst_cd 
     ,sorce_agrmt_id 
     ,asgn_sorce_syst_cd 
from edw_p.claim_agrmt 
where sorce_claim_id = '4513049' 
and  asgn_sorce_syst_cd = 'CLONE' 
UNION 
select sorce_claim_id 
     ,claim_sorce_syst_cd 
     ,sorce_agrmt_id 
     ,asgn_sorce_syst_cd 
from edw_p.claim_agrmt 
where sorce_claim_id = '4513049' 
and  asgn_sorce_syst_cd = 'GRASN' 
and  source_claim_id NOT IN (select sorce_claim_id from edw_p.claim_agrmt where asgn_sorce_syst_cd = 'CLONE') 
+0

我想'sorce_claim_id = '4513049' 和(asgn_sorce_syst_cd = '克隆' 或source_claim_id NOT IN(選擇edw_p.claim_agrmt sorce_claim_id其中asgn_sorce_syst_cd = '克隆'))'會更簡單和足夠的,但+1無論如何,您仍然應該通過查詢獲得正確的結果。 – hvd 2013-05-03 19:18:13

+0

我建議將not in改爲(選擇foo減去選擇欄)中的not exists或source_claim_id,具體取決於teradata支持的語法。不會趨於緩慢。 – 2013-05-03 19:21:57

+0

完美!非常感謝你們! – gfuller40 2013-05-03 19:29:59