【问题标题】:Is there a way to convert this query into Oracle query using merge statement?有没有办法使用合并语句将此查询转换为 Oracle 查询?
【发布时间】:2020-10-22 05:39:39
【问题描述】:
   Update
   vtnhmashaupl as UPL 
   inner join
      vtsmvaccounts vacc 
      on vaccines. Vaiban = upl.vaiban 
   Inner join
      vtsmvaccfmrmap as vfmr 
      on vacc.vaibanid = vfmr.vaibanid 
      and vfmr.fmrcode = upl.fmrcode 
   inner join
      vtnhmbudget bd 
      on bd.hloccode = vacc.vacustidnt 
   inner join
      vtnhmbudgetdtls dtls 
      on dtls.fmrcode = upl.fmrcode 
      and ifnull (Dtls.fnyear, bd.fnyear) = in_fnyear 
set
   upl.buddtlsid = dtls.buddtlsid, upl.budid = dtls.budid, upl.hloccode = bd.hloccode;

【问题讨论】:

    标签: mysql sql database oracle


    【解决方案1】:

    我认为这符合您的期望。如果没有表结构和示例输入数据,我无法对其进行测试。

    merge into vtnhmashaupl upl
    using ( select vacc.vaiban
                   , vfmr.fmrcode
                   , dtls.buddtlsid
                   , dtls.budid
                   , bd.hloccode
            from vtsmvaccounts vacc 
            inner join vtsmvaccfmrmap as vfmr 
              on vacc.vaibanid = vfmr.vaibanid 
            inner join vtnhmbudget bd 
              on bd.hloccode = vacc.vacustidnt 
            inner join vtnhmbudgetdtls dtls 
              on dtls.fmrcode = vfmr.fmrcode
              and nvl (dtls.fnyear, bd.fnyear) = in_fnyear 
           ) sq
    on ( sq.vaiban  = upl.vaiban  
         and sq.fmrcode = upl.fmrcode )         
    when matched then 
        update          
        set upl.buddtlsid = sq.buddtlsid
           , upl.budid = sq.budid
           , upl.hloccode = sq.hloccode;
    

    【讨论】:

    • 谢谢。真的很有帮助
    猜你喜欢
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多