日期:2014-05-17  浏览次数:20677 次

sql语句查询条件的值改变速度无比慢?
select 
distinct b.HoursProductionID, b.WorkBill,b.ContractNO,b.ProductName,b.ContractQty,b.Unit, b.BindSubType,b.bussinessID,
g.MasterType,g.SubType,h.DepartmentCode,h.TradeType,g.Qty,
ISNULL(case when b.IsDuplicate=1 and len(b.WorkBillFlag)=9  then 0
       else ( select convert(decimal(18,4),x.CostPrice) from GetRationCostByWorkBill (b.WorkBillFlag,b.bussinessID) x ) end,0) as RationCost,--定量材料价格
ISNULL(SUM(CASE WHEN charindex('印刷',d.ProcessName) > 0 THEN (a.UnitProduction * c.FixMaterial) ELSE (a.Production * c.FixMaterial) END ),0)AS QuotaCost, --定额材料价格
ISNULL(SUM(CASE WHEN charindex('印刷',d.ProcessName) > 0 THEN (a.UnitProduction * c.LimitMaterial) ELSE (a.Production * c.LimitMaterial) END),0) AS LimitCost, --限量材料
ISNULL(SUM(CASE WHEN charindex('印刷',d.ProcessName) > 0 THEN (a.UnitProduction * c.PointMaterial) ELSE (a.Production * c.PointMaterial) END),0) AS PointCost,--定点材料
ISNULL(SUM(a.Hours * c.FixArtificial),0) AS ArtifCost,--人工
ISNULL(SUM(a.Hours * c.Utility),0)  AS UtilityCost, --水电
ISNULL(SUM(a.Hours * c.ChangeCost),0)  AS ChangeCost,--制造费用 
ISNULL(SUM(a.Hours * c.FactoryRent),0)  AS FactoryCost, --厂租
ISNULL(SUM(a.Hours * c.Depreciation),0)  AS DepreCost, --折旧
ISNULL(i.Amount,0 ) as ZZDeptCost, --装帧成本
ISNULL(e.NoTaxAmount,0 ) as TMCost, --烫金、激光模切:生产采购费用
ISNULL(f.NoTaxAmount,0 ) as OutCost, --外发加工费
ISNULL( case when b.IsDuplicate=1 then 0
else g.Amount end, 0) as  SalesRevenue --销售收入  

from Cost_HoursProductionDetail a 
left join Cost_HoursProduction b on a.HoursProductionID=b.HoursProductionID 
left join Cost_ProcessFixData c on a.ProcessFixDataID=c.ProcessFixDataID 
left join Cost_Process d on a.ProcessID=d.ProcessID 
left join (
               SELECT sum(NoTaxAmount) as NoTaxAmount,WorkBill,bussinessID
FROM   dbo.Cost_ProductionProcureDetail AS x1 INNER JOIN   dbo.Cost_ProductionProcurement AS x2 ON x1.ProcureID = x2.ProcureID
WHERE  (x2.ApproveStatus = 9)  group by x1.WorkBill,x2.bussinessID
                ) e on e.WorkBill=b.WorkBill and e.bussinessID=b.bussinessID
 left join (
              SELECT sum(NoTaxAmount) as NoTaxAmount,WorkBill,bussinessID
     FROM   dbo.Cost_OutSideDetail AS x1 INNER JOIN dbo.Cost_OutSide AS     x2  ON x1.OutSideID = x2.OutSideID
WHERE  (x1.IsSpecial = '是') AND (x2.ApproveStatus = 9) group by x1.WorkBill,x2.bussinessID
                ) f&n