• 一个统计查询写的哥要哭了


    整了2个小时:

    --列出存在的线束
    with WiringHarness(PartNo,CarType,PartName,Setting)
    as
    (
      select tp.PartNo,tp.CarType,pp.p_setting Setting,pp.p_partname PartName from
      (
    	  select p_partno  PartNo,p_yw carType from p_partno group by p_partno,p_yw
    	  Union
    	  select partno PartNo, p_yw carType   from inticket where p_bs = '1' group by partno,p_yw
    	  Union
    	  select partno PartNo,p_yw carType  from outticket where p_bs = '1' group by partno,p_yw 
      )as tp
      left join p_Partno pp ON
      tp.PartNo=pp.p_partno 
      And
      tp.CarType=pp.p_yw
       
    ),--计算期初库存
     WHBeforeInventory(PartNo,CarType,PartName,Setting,BeforeQty)
    as
    (
      select *,
      (
       isnull((
        select sum(Inqty)  from inticket
        where ticketstatus = '关闭' and p_bs = '1'
        And WH.PartNo=inticket.PartNo And WH.CarType=inticket.p_yw
        And InDate < '2011-10-10'
       ),0)
       - --这里有个减号!!
       isnull((
       Select sum(isnull(A.OutQty,0))  from OutticketList A 
    	left join outticket B
    	ON A.partno = B.partno and A.subid = B.subid and A.outticketid = B.outticketid 
    	where A.partno =WH.PartNo 
    	and A.Status = '完成' 
    	and ltrim(rtrim(B.p_yw)) =WH.CarType and B.p_bs = '1' and B.OutDate <'2011-10-10' 
       ),0) 
       )as BeforeQty
    
        from WiringHarness WH
    ), --指定时间段内的入库统计
    WHIn (PartNo,CarType,SumProductionIn,SumRepairIn,SumReturnIn,SumOtherIn)
    as
    (
    	Select 
        PartNo,p_yw CarType,
    	Sum(ProductionIn) SumProductionIn,
    	Sum(RepairIn) SumRepairIn,
    	Sum(ReturnIn) SumReturnIn,
    	Sum(OtherIn) SumOtherIn
    	
    	from
    	(
    		Select 
    		Case When Tickettype='生产缴库' Then isnull(InQty,0)
    		Else 0 End as ProductionIn,
    
    		Case When Tickettype='返修入库' Then isnull(InQty,0)
    		Else 0 End as RepairIn,
    
    		Case When Tickettype='退货入库' Then isnull(InQty,0)
    		Else 0 End as ReturnIn ,
    
    		Case When Tickettype='其它入库' Then isnull(InQty,0)
    		Else 0 End as OtherIn,
    		partNo,p_yw
    		From InTicket
    		where   TicketStatus = '关闭' and p_bs = '1'   
    		and  InDate >='2011-10-10'  and InDate <='2011-11-3 23:59:59'
    	) as t01
    
    	group by partno, p_yw
    ), --指定时间段内的出库统计
    WHOut(PartNo,CarType,SumRepairOut,SumTransferOut,SumOutPlanOut,SumOtherOut,SumRetailOut)
    as
    (
        Select
    	PartNo,CarType,
    	Sum(RepairOut) SumRepairOut,
    	Sum(TransferOut) SumTransferOut,
    	Sum(OutPlanOut) SumOutPlanOut,
    	Sum(OtherOut) SumOtherOut,
    	Sum(RetailOut) SumRetailOut
    	From
    	(
    		Select 
    		B.partNo,B.p_yw as CarType,
    
    		Case When Ticktype='返修出库' Then isnull(A.OutQty,0)
    		Else 0 End as RepairOut,
    
    		Case When Ticktype='转移出库' Then isnull(A.OutQty,0)
    		Else 0 End as TransferOut,
    
    		Case When Ticktype='计划外出库' Then isnull(A.OutQty,0)
    		Else 0 End as OutPlanOut ,
    
    		Case When Ticktype='其它出库' Then isnull(A.OutQty,0)
    		Else 0 End as OtherOut,
    
    		Case When Ticktype='个体零售' Then isnull(A.OutQty,0)
    		Else 0 End as RetailOut
    
    		From OutticketList A 
    		left join outticket B
    		ON A.partno = B.partno and A.subid = B.subid and A.outticketid = B.outticketid 
    		where  A.Status = '完成' and B.p_bs = '1' 
    		and  OutDate >='2011-10-10'  and OutDate <='2011-11-3 23:59:59'
    	) as t02
    	group by PartNo,CarType
    
    )
    
    select 
    *,
    BeforeQty+TotalIn-TotalOut as Inventory
    from(
    	select 
        WHB.*,
        SumProductionIn,SumRepairIn,SumReturnIn,SumOtherIn,
        SumRepairOut,SumTransferOut,SumOutPlanOut,SumOtherOut,SumRetailOut,
    	(isnull(SumProductionIn,0)+isnull(SumRepairIn,0)+isnull(SumReturnIn,0)+isnull(SumOtherIn,0)) as  TotalIn  ,
    	(isnull(SumRepairOut,0)+isnull(SumTransferOut,0)+isnull(SumOutPlanOut,0)+isnull(SumOtherOut,0)+isnull(SumRetailOut,0)) as TotalOut
    	
    	from
    	WHBeforeInventory WHB
    	Left Join WHIn ON WHB.PartNo=WHIn.PartNO And WHB.CarType=WHIn.CarType
    	Left Join WHOut On WHB.PartNo=WHOut.PartNo And WHB.CarType=WHOut.CarType
    ) as t001
    
    
    
    
    
  • 相关阅读:
    C++ new 解析重载 .
    __cdecl,__fastcall, __stdcall 什么区别? .
    C++构造函数调用顺序
    用gdb调试core dump文件
    placement new(转)
    [精华] 跟我一起写 Makefile
    使用 GDB 调试多进程程序
    第37条:避免对函数中继承得来的默认参数值进行重定义
    程序只运行一个是实例 .
    南通SEO:单页的SEO元素
  • 原文地址:https://www.cnblogs.com/wdfrog/p/2235017.html
Copyright © 2020-2023  润新知