zoukankan      html  css  js  c++  java
  • SQL优化方案

    1:建立中间表,将步骤分解。

    2:避免全字段查询,只查需要的字段

    3:限定条件查询,避免先关联后写条件,

    --优化交货数据  --建临时表T_JHinfo  select A.VBELN,C.VBELN AS JH_VBELN,C.ERDAT AS JH_ERDAT,C.WADAT_IST   from (          select VBELN,case when AUART='ZA17' then BSTNK else  VBELN end as VBELNNO          from VBAK          where ERDAT=CONVERT(varchar(10),GETDATE()-1,112)          )A left join (select VBELN,VGBEL from LIPS) AS B ON A.VBELNNO=B.VGBEL             LEFT jOIN (select VBELN,ERDAT,WADAT_IST FROM LIKP) AS C ON B.VBELN=C.VBELN

    select A.ERDAT AS 对接日期, A.ERZET AS 对接时间,A.ORDERID AS 订单号,DDLX AS 订单类型,A.KUNNR AS 客户编号, B.POSNR1 AS 订单行项目,B.MATNR AS 物料编号,KWMENGE AS 数量,SLPRC AS 单价,BUKRS AS 销售组织,B.VKBUR AS 销售办公室, B.VBELN as SAP订单号,POSNR AS SAP订单行项目,ZMENG AS SAP订单受理数量,LIFSK AS SAP订单交货冻结, C.ERDAT AS SAP订单创建日期, F.JH_VBELN AS SAP交货单号,F.JH_ERDAT AS SAP交货单创建日期,F.WADAT_IST AS SAP交货单过帐日期, B.REASON as 拒绝原因,case when  A.DDLX='08' AND B.VBELN='' AND B.REASON='' then '待审核'         when A.DDLX='08' AND LIFSK='ZE'  then '已审核,待付款'         when  A.DDLX='08' AND LIFSK='ZF'  then '已付款,待发货'         when  A.DDLX='08' AND F.WADAT_IST<>'' then '已发货'         when  A.DDLX='08' AND  B.REASON<>'' then '已拒绝'         when  A.DDLX<>'08' AND B.VBELN='' AND B.REASON='' then '待受理'         when  A.DDLX<>'08' AND B.VBELN<>'' AND F.WADAT_IST='' then '已受理待发货'         when  A.DDLX<>'08' AND F.WADAT_IST<>'' then '已发货'         end as 订单状态 from (select ERDAT,ERZET,ORDERID,DDLX,KUNNR,BUKRS   from ZTSD200 where ERDAT=CONVERT(Varchar(10),GETDATE()-1,112) ) AS  A left join (select ORDERID,POSNR1,MATNR,KWMENGE,SLPRC,VKBUR,VBELN,REASON                       from  ZTSD200_item                       where ORDERID IN (select ORDERID from ZTSD200 where ERDAT=CONVERT(Varchar(10),GETDATE()-1,112) )        ) AS  B ON A.ORDERID=B.ORDERID                left join (select VBELN,LIFSK,ERDAT from VBAK where ERDAT=CONVERT(Varchar(10),GETDATE()-1,112)) C ON B.VBELN=C.VBELN                LEFT JOIN (select VBELN,POSNR,ZMENG from VBAP where ABGRU not in ('X2','X6') AND ERDAT=CONVERT(Varchar(10),GETDATE()-1,112)) D ON B.VBELN=D.VBELN       LEFT jOIN T_JHinfo AS F ON C.VBELN=F.VBELN

  • 相关阅读:
    SecureRandom
    一个不错的架构图:基于SpringCloud的微服务项目
    Android 增量更新完全解析 是增量不是热修复
    Android热修复方案比较
    Android Activity作为dialog对话框的使用详细介绍
    Android 微信分享不出去?四步搞定!
    Android:用签名打包后微信分享失效
    Android 根据QQ号跳转到QQ聊天界面
    Android fragment-findFragmentByTag 始终返回 null
    Android RecyclerView遇到notifyDataSetChanged无效时的解决方案
  • 原文地址:https://www.cnblogs.com/zhangzt/p/4241558.html
Copyright © 2011-2022 走看看