SQL如果存在两个记录,请选择要显示Teradata的记录

时间:2013-05-03 19:10:33

标签: sql olap teradata

抱歉标题/描述不佳。发生的事情是我通过ID加入另一个表,但数据来自两个不同的管理系统(CLONE和GRASN)是否有任何代码我可以添加说“如果CLONE和GRASN存在,请使用CLONE”?

一个简单的查询如下所示:

 ` 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工作。

1 个答案:

答案 0 :(得分: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')