0

我试图用返回两个值的选择语句的输出来更新单个表。一个是表中我需要更新的accountid,另一个是我需要更新的信息。

Here is my select statement
select CTP.CARETEAMPATIENTID, O.ORGANIZATIONID
  from acts.careteampatient ctp,  
       ods.member m,
       ods.supplierorganization so,
       ods.MASTERSUPPLIERSUPPLIERRELATION mssr,
       ods.INSURANCEORGSUPPLIERRELATION   IOSR, 
       ods.INSURANCEORGANIZATION          IO,
       acts.organization o
where ctp.accountorgid is null
    and m.primarymemberplanid = ctp.primarymemberplanid
    and SO.AHMSUPPLIERID = M.AHMSUPPLIERID
    and mssr.SUPPLIERID       = so.SUPPLIERORGID
    AND iosr.SUPPLIERID       = so.SUPPLIERORGID
    AND io.INSURANCEORGID     = iosr.INSURANCEORGID
    and io.processingmodecd  = 'P'
    and so.usagemnemonic     = 'P'
    and O.ODSACCOUNTID = IO.INSURANCEORGID
    and O.ACCOUNTFLG = 'Y'

我想做一些事情

update careteampatient
from (select CTP.CARETEAMPATIENTID patientid, O.ORGANIZATIONID orgid
  from acts.careteampatient ctp, 
       ods.member m,
       ods.supplierorganization so,
       ods.MASTERSUPPLIERSUPPLIERRELATION mssr,
       ods.INSURANCEORGSUPPLIERRELATION   IOSR,
       ods.INSURANCEORGANIZATION          IO,
       acts.organization o
where ctp.accountorgid is null
    and m.primarymemberplanid = ctp.primarymemberplanid
    and SO.AHMSUPPLIERID = M.AHMSUPPLIERID
    and mssr.SUPPLIERID       = so.SUPPLIERORGID
    AND iosr.SUPPLIERID       = so.SUPPLIERORGID
    AND io.INSURANCEORGID     = iosr.INSURANCEORGID
    and io.processingmodecd  = 'P'
    and so.usagemnemonic     = 'P'
    and o.odsaccountid = io.insuranceorgid
    and o.accountflg = 'Y') b  
set a.accountorgid = b.orgid
where a.careteampatientid = b.patientid

这是我也尝试过的合并

merge into careteampatient a
using (select CTP.CARETEAMPATIENTID patientid, O.ORGANIZATIONID orgid
        from acts.careteampatient ctp, 
             ods.member m,
             ods.supplierorganization so,
             ods.MASTERSUPPLIERSUPPLIERRELATION mssr,
             ods.INSURANCEORGSUPPLIERRELATION   IOSR,
             ods.INSURANCEORGANIZATION          IO,
             acts.organization o
      where ctp.accountorgid is null
          and m.primarymemberplanid = ctp.primarymemberplanid
          and SO.AHMSUPPLIERID = M.AHMSUPPLIERID
          and mssr.SUPPLIERID       = so.SUPPLIERORGID
          AND iosr.SUPPLIERID       = so.SUPPLIERORGID
          AND io.INSURANCEORGID     = iosr.INSURANCEORGID
          and io.processingmodecd  = 'P'
          and so.usagemnemonic     = 'P'
          and o.odsaccountid = io.insuranceorgid
          and o.accountflg = 'Y') b
on a.careteampatientid = b.patientid
when matched then
  update 
    set a.accountorgid = b.orgid

这不起作用,而且我的想法很新鲜,任何帮助都会很棒。谢谢

4

1 回答 1

0

想通了,我的ON上缺少括号。这也应该是on (a.careteampatientid = b.patientid)我的选择应该阅读select distinct

于 2013-03-19T22:43:14.043 回答