2013-03-19 85 views
0

我試圖用返回兩個值的select語句的輸出來更新單個表。一個是我需要在表格中更新的認證,另一個是我需要更新的信息。使用select語句數據更新/合併多個行

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 

這個心不是工作和Im新鮮的想法,任何幫助將太棒了。謝謝

+0

我試過使用'MERGE'和我有同樣的運氣。 – 2013-03-19 22:21:07

回答

0

想通了,我在我的ON上丟失了括號。它應該是on (a.careteampatientid = b.patientid)也我的選擇應該閱讀select distinct