SELECT zdrq 日期,djbh 单号,c.ckbh 仓库编号,CKMC 仓库,H.CFE1 提货方式,H.CFE2 付款方式,
(select top 1 djbh from k_ckw cw left join k_ck ct on cw.link=ct.link where cw.fhid=w.id) 出库单号,
k.khbh 客户编号,K.KHMC AS 客户名称,y.ywbh 业务编号,Y.YWXM AS 业务员 ,W.SPBH AS 商品编号,P.SPMC AS 商品名称,W.GGXH AS 规格型号,
P.JLDW 单位,P.SPCD  ,P.SPCZ  ,p.spbz  ,p.splb,p.gsz 根实重,
w.hwbh,W.SCPH 入库批号,
w.cfe1,w.cfe2,w.cfe3,w.cfe4,w.cfe5,w.cfe6,w.cfe7,w.cfe8,
case    when H.FHFS=0 THEN '合同销售'
when H.FHFS=1 THEN '正常销售'
when H.FHFS=2 THEN '内调销售'
when H.FHFS=3 THEN '直销销售'
when H.FHFS=4 THEN '其它销售'
when H.FHFS=5 THEN '退货销售'
else  '' end 销售类别, ISNULL(W.SPSL,0) AS  SPSL
,ISNULL(W.DFE1,0) AS  DFE1
,ISNULL(W.DFE2,0) AS  DFE2
,ISNULL(W.DFE3,0) AS  DFE3
,DBO.ISZERO(W.SPJE+W.SSSE,W.SPSL) AS SPSL价
,DBO.ISZERO(W.SPJE+W.SSSE,W.DFE1) AS DFE1价
,DBO.ISZERO(W.SPJE+W.SSSE,W.DFE2) AS DFE2价
,DBO.ISZERO(W.SPJE+W.SSSE,W.DFE3) AS DFE3价
--,isnull(dbo.getFHFYDJ(w.link,2),0) 费用单价
--,isnull(dbo.getFHFYDJ(w.link,2)*w.spsl,0) 费用金额
,ISNULL(W.SPJE,0) AS SPJE
,ISNULL(W.SSSE,0) AS 税额
,ISNULL(W.SSSE+W.SPJE,0) AS JESE
--,ISNULL(W.SSSE+W.SPJE,0)+isnull(dbo.getFHFYDJ(w.link,2)*w.spsl,0) AS 金额总计
,isnull(w.SPCB,0) as SPSL成本价
,dbo.iszero(isnull(w.SPcb*w.spsl,0),isnull(W.DFE1,0)) as DFE1成本价
,dbo.iszero(isnull(w.SPcb*w.spsl,0),isnull(W.DFE2,0)) as DFE2成本价
,dbo.iszero(isnull(w.SPcb*w.spsl,0),isnull(W.DFE3,0)) as DFE3成本价
,isnull(w.SPcb*w.spsl,0) as 成本SPJE
,isnull((select sum(spsl) from k_ckw where fhid=w.id),0) 出库数量
,isnull((select sum(dfe1) from k_ckw where fhid=w.id),0) 出库支数
,isnull((select sum(dfe2) from k_ckw where fhid=w.id),0) 出库过磅
,isnull((select sum(dfe3) from k_ckw where fhid=w.id),0) 出库件数
,isnull((select sum(shsl) from k_ckw where fhid=w.id),0) 收货数量
,isnull((select sum(shhl) from k_ckw where fhid=w.id),0) 收货支数
,isnull((select sum(shtl) from k_ckw where fhid=w.id),0) 收货过磅
,isnull((select sum(shfl) from k_ckw where fhid=w.id),0) 收货件数
,isnull(w.spje-w.spcb*w.spsl,0) as 利润1
,isnull(w.spje-(select sum(spje) from k_ckw where fhid=w.id),0) as 利润2,(select top 1 dt.cfe3 from c_dd dt left join c_ddw dw on dt.link=dw.link where dw.id in(select ddid from k_rkw where spbh=w.spbh and scph=w.scph)) 采购合同编号
,(select top 1 dt.cfe3 from x_dd dt left join x_ddw dw on dt.link=dw.link where dw.id =ddid) 销销合同编号,
'X_FH' SRC,
W.LINK SRCID,
W.ID WID,W.LINE 生成时间
FROM
X_FHW W LEFT JOIN X_FH H ON W.LINK=H.LINK
LEFT JOIN D_SP P ON W.SPBH=P.SPBH
LEFT JOIN D_KH K ON H.KHBH=K.KHBH
LEFT JOIN D_YWY Y ON Y.YWBH=H.YWBH
left join d_ck c on c.ckbh=w.ckbh
WHERE ZDRQ >= '[开始日期,DATE]' AND ZDRQ <= '[结束日期,DATE]' 
and H.DWID like '[公司,D_DW]%'
AND W.SPBH LIKE '[商品名称,D_SP]%' AND
H.KHBH LIKE '[客户名称,D_KH]%' AND BSTT >= 1
AND MMMM<>0 
AND (H.YWBH LIKE '[业务员,D_YWY]%' OR H.YWBH IS NULL)
AND W.CKBH LIKE '[仓库,D_CK]%'
查询慢,感觉是列求和的问题

解决方案 »

  1.   


    SELECT 
    zdrq 日期,
    djbh 单号,
    c.ckbh 仓库编号,
    CKMC 仓库,
    H.CFE1 提货方式,
    H.CFE2 付款方式,
    (
    select top 1 djbh 
    from k_ckw cw 
    left join k_ck ct on cw.link=ct.link 
    where cw.fhid=w.id
    ) 出库单号,
    k.khbh 客户编号,
    K.KHMC AS 客户名称,
    y.ywbh 业务编号,
    Y.YWXM AS 业务员,
    W.SPBH AS 商品编号,
    P.SPMC AS 商品名称,
    W.GGXH AS 规格型号,
    P.JLDW 单位,
    P.SPCD ,
    P.SPCZ ,
    p.spbz ,
    p.splb,
    p.gsz 根实重,
    w.hwbh,
    W.SCPH 入库批号,
    w.cfe1,
    w.cfe2,
    w.cfe3,
    w.cfe4,
    w.cfe5,
    w.cfe6,
    w.cfe7,
    w.cfe8,
    case when H.FHFS=0 THEN '合同销售'
     when H.FHFS=1 THEN '正常销售'
     when H.FHFS=2 THEN '内调销售'
     when H.FHFS=3 THEN '直销销售'
     when H.FHFS=4 THEN '其它销售'
     when H.FHFS=5 THEN '退货销售'
     else '' end 销售类别,
    ISNULL(W.SPSL,0) AS SPSL
    ,ISNULL(W.DFE1,0) AS DFE1
    ,ISNULL(W.DFE2,0) AS DFE2
    ,ISNULL(W.DFE3,0) AS DFE3
    ,DBO.ISZERO(W.SPJE+W.SSSE,W.SPSL) AS SPSL价
    ,DBO.ISZERO(W.SPJE+W.SSSE,W.DFE1) AS DFE1价
    ,DBO.ISZERO(W.SPJE+W.SSSE,W.DFE2) AS DFE2价
    ,DBO.ISZERO(W.SPJE+W.SSSE,W.DFE3) AS DFE3价
    ,ISNULL(W.SPJE,0) AS SPJE
    ,ISNULL(W.SSSE,0) AS 税额
    ,ISNULL(W.SSSE+W.SPJE,0) AS JESE
    ,isnull(w.SPCB,0) as SPSL成本价
    ,dbo.iszero(isnull(w.SPcb*w.spsl,0),isnull(W.DFE1,0)) as DFE1成本价
    ,dbo.iszero(isnull(w.SPcb*w.spsl,0),isnull(W.DFE2,0)) as DFE2成本价
    ,dbo.iszero(isnull(w.SPcb*w.spsl,0),isnull(W.DFE3,0)) as DFE3成本价
    ,isnull(w.SPcb*w.spsl,0) as 成本SPJE
    ,k_c.spsl as 出库数量
    ,k_c.dfe1 as 出库支数
    ,k_c.dfe2 as 出库过磅
    ,k_c.dfe3 as 出库件数
    ,k_c.shsl as 收货数量
    ,k_c.shhl as 收货支数
    ,k_c.shtl as 收货过磅
    ,k_c.shfl as 收货件数
    ,isnull(w.spje-w.spcb*w.spsl,0) as 利润1
    ,isnull(w.spje-k_c.spje),0) as 利润2
    ,(
    select top 1 dt.cfe3 
    from c_dd dt 
    left join c_ddw dw on dt.link=dw.link 
    where exists
    (
    select 1 from k_rkw 
    where spbh=w.spbh 
    and scph=w.scph
    and ddid=dw.id
    )
    ) 采购合同编号
    ,(
    select top 1 dt.cfe3 
    from x_dd dt 
    left join x_ddw dw 
    on dt.link=dw.link 
    where dw.id =ddid
    ) 销销合同编号,
    'X_FH' SRC,
    W.LINK SRCID,
    W.ID WID,W.LINE 生成时间
    FROM
    X_FHW W LEFT JOIN X_FH H ON W.LINK=H.LINK
    LEFT JOIN D_SP P ON W.SPBH=P.SPBH
    LEFT JOIN D_KH K ON H.KHBH=K.KHBH
    LEFT JOIN D_YWY Y ON Y.YWBH=H.YWBH
    left join d_ck c on c.ckbh=w.ckbh
    left join 
    (
    select 
    fhid,
    isnull(sum(spsl),0) as spsl,
    isnull(sum(dfe1),0) as dfe1,
    isnull(sum(dfe2),0) as dfe2,
    isnull(sum(dfe3),0) as dfe3,
    isnull(sum(shsl),0) as shsl,
    isnull(sum(shhl),0) as shhl,
    isnull(sum(shtl),0) as shtl,
    isnull(sum(shfl),0) as shfl,
    isnull(sum(spje),0) as spje
    from k_ckw
    group by fhid
    ) k_c on k_c.fhid=w.id
    WHERE 
    ZDRQ >= '[开始日期,DATE]' AND ZDRQ <= '[结束日期,DATE]'  
    and H.DWID like '[公司,D_DW]%'
    AND W.SPBH LIKE '[商品名称,D_SP]%' AND
    H.KHBH LIKE '[客户名称,D_KH]%' AND BSTT >= 1
    AND MMMM<>0  
    AND (H.YWBH LIKE '[业务员,D_YWY]%' OR H.YWBH IS NULL)
    AND W.CKBH LIKE '[仓库,D_CK]%'
    --采购合同编号 和 销销合同编号 也可以放到 from 后面,通过Left Join 实现,
      再者 where 后面能不使用like就不使用...