• 优化后的sql 语句 oracle


    用or  用union 代替   union 是去重 没有union all 效率高

    case when then 用DECODE(mbi.isvalidatebill,NULL,0,0,0,1) IsValidateBill, 代替

    with rs as
     (select formcode, bill.customerorder, bill.delivercode
        from fhl_SCS.Sc_Bill bill
       where BILL.IsDeleted = 0
         and bill.formcode = upper('11602293620274')
      UNION ALL
      select formcode, bill.customerorder, bill.delivercode
        from fhl_SCS.Sc_Bill bill
       where BILL.IsDeleted = 0
         and bill.customerorder = upper('11602293620274')
       UNION ALL
      select formcode, bill.customerorder, bill.delivercode
        from fhl_SCS.Sc_Bill bill
       where BILL.IsDeleted = 0
         and bill.delivercode = upper('11602293620274'))
    SELECT BILL.FormCode,
           BILL.CustomerOrder,
           BILL.DeliverCode,
           BILL.DeliverStationID StationId,
           ecp.CompanyName StationName,
           ecp.SiteNo,
           ecp.simplespell StationPinYin,
           ecp.CompanyFlag,
           0 NeedAmount,
           BInfo.PackageCount,
           BILL.Status,
           BILL.ReturnStatus,
           ob.departureid LastOutBoundDepartment,
           0 IsInbounding,
           DECODE(mbi.isvalidatebill,NULL,0,0,0,1) IsValidateBill,
           DECODE(BInfo.IsValidateBill,1,1,0) IsHasValidateBill,
           DECODE(BILL.InBoundKey,NULL,1,0) IsFirstInbound,
           BILL.MerchantId,
           mbi.isformcode,
           mbi.iswaybillno,
           mbi.isdelivercode
      FROM fhl_SCS.SC_Bill BILL
      JOIN rs
        on bill.formcode = rs.formcode
      JOIN fhl_SCS.SC_BillInfo BInfo
        ON fhl_SCS.BILL.formcode = BInfo.formcode
      JOIN MerchantBaseInfo mbi
        ON BILL.Merchantid = mbi.ID
      JOIN ExpressCompany ecp
        on bill.deliverstationid = ecp.expresscompanyid
      left Join fhl_SCS.SC_Inbound SIB
        ON BILL.InBoundKey = SIB.IBID
      left Join fhl_SCS.Sc_Outbound ob
        on Bill.Outboundkey = ob.obid
     inner join fhl_dcs.ordercomplexquery ocq
        ON to_char(ocq.waybillno) = rs.formcode
       and ocq.formcode = rs.customerorder
       and ocq.delivercode = rs.delivercode
       and OCQ.ISDELETED = 0
     WHERE bill.returnstatus is null
       and not OCQ.Querystatus in (1, 2, 3, 4, 5, -9);

  • 相关阅读:
    HDU 5698 瞬间移动
    HDU 5695 Gym Class
    HDU 5694 BD String
    HDU 5692 Snacks
    HDU 5691 Sitting in Line
    胜利大逃亡
    BFS(广度优先搜索)
    计算直线的交点数
    Division
    Jesse's Code
  • 原文地址:https://www.cnblogs.com/hechunming/p/5229927.html
Copyright © 2020-2023  润新知