我需要根据匹配的assignment_type_desc
更新表randm_sampler
中名为clm_snapshot
的列,其中包含来自源表claim_id
的值。问题是clm_snapshot
中有两条记录,其中claim_id
为assignment_type_desc
,NOT NULL
的值不同。我不需要这些记录,因此我在update语句中包含了UPDATE RANDM_SAMPLER SET ASSIGNMENT_TYPE_DESC =
(SELECT DISTINCT A.ASSIGNMENT_TYPE_DESC
FROM CLM_SNAPSHOT A,
RANDM_SAMPLER B
WHERE A.CLAIM_ID = B.CLAIM_ID
AND A.CURRENT_SNAPSHOT_IND='Y'
AND A.HO_CONSULTANT_SEQ_NBR = (SELECT MAX(HO_CONSULTANT_SEQ_NBR)
FROM CLM_SNAPSHOT C
WHERE A.CLAIM_ID = C.CLAIM_ID
AND C.CLAIM_ID IS NOT NULL
GROUP BY CLAIM_ID)
AND A.CLAIM_ID IS NOT NULL )
条件。但是update语句仍然返回单行子查询返回多行错误。
NULL
我绝对肯定的是,重复项来自claim_id
NOT NULL
值{1}}的记录。但{{1}}条件在这里似乎没有效果。有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
尝试遵循UPDATE语句:
UPDATE RANDM_SAMPLER SET ASSIGNMENT_TYPE_DESC =
(SELECT DISTINCT A.ASSIGNMENT_TYPE_DESC
FROM CLM_SNAPSHOT A
WHERE A.CLAIM_ID = RANDM_SAMPLER.CLAIM_ID
AND A.CURRENT_SNAPSHOT_IND='Y'
AND A.HO_CONSULTANT_SEQ_NBR = (SELECT MAX(HO_CONSULTANT_SEQ_NBR)
FROM CLM_SNAPSHOT C
WHERE A.CLAIM_ID = C.CLAIM_ID
AND C.CLAIM_ID IS NOT NULL
GROUP BY CLAIM_ID)
AND A.CLAIM_ID IS NOT NULL )
我已经从子查询中删除了JOIN到RANDM_SAMPLER,而是添加了非常重要的条件,因为它使得表的链接得以更新:
A.CLAIM_ID = RANDM_SAMPLER.CLAIM_ID
您可能尝试过相同但添加表B会让事情变得更糟。并且外表没有任何联系。