0

我需要使用基于匹配的源表中的值更新assignment_type_desc表中调用的列。问题是NULL中有两条记录,而. 我不需要这些记录,因此我在更新语句中包含了条件。但是更新语句仍然返回单行子查询返回多行错误。randm_samplerclm_snapshotclaim_idclm_snapshotclaim_idassignment_type_descNOT NULL

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 ) 

我绝对肯定重复项来自NULL具有claim_id. 但是这个NOT NULL条件在这里似乎并不有效。有人可以帮我解决这个问题吗?

4

1 回答 1

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 ) 

我已经从子查询中删除了 RANDM_SAMPLER 的 JOIN ,而是添加了非常重要的条件,因为它使指向要更新的表的链接:

A.CLAIM_ID = RANDM_SAMPLER.CLAIM_ID

您可能尝试过相同的方法,但添加表 B 会使事情变得更糟。而且与外面的桌子没有任何联系。

于 2013-01-01T16:46:09.690 回答