zoukankan      html  css  js  c++  java
  • 又一个查询,哥整了一天,NND有点受不鸟了

    --参考表--
    With RM(MPartNo,MPartName,UM,MSupplier,Stock,MType)
    as
    ( 
     select 
     p_partno MPartNo,p_partname MPartName,p_unit UM,p_supplier MSupplier,
     Stock,p_type MType
     from p_partno_rm
    ), --计算期初库存----
     RMBeforeQty_tmp(MPartNo, BefQty)
    as
    (
      --电线部分统计
      select  MPartNo, 
      Sum(SumInQty)-Sum(SumOutQty)BefQty
      From(
    	   Select partno MPartNo,
    	   Sum(isnull(inQty,0)) * 1000  SumInQty,
    	   0 SumOutQty From Storage_Cable 
    	   Where Indate <'$BDate'
    	   group by partno
           --如果电线发料信息在storage_fixbin中出现,调整下面代码
    	   Union all
    
    	   Select partno MPartNo,
    	   0 SumInQty,
    	   Sum(isnull(outQty,0)) * 1000  SumOutQty From Storage_Cable 
    	   Where outdate <'$BDate'
    	   group by partno
          ) as t_cable_befQty
          group by MPartNo
      Union all
      --其他材料-----------------------
      select  MPartNo, 
      Sum(SumInQty)-Sum(SumOutQty)BefQty
      From(
    	  select partno MPartNo,
    	  sum(isnull(inqty,0)) SumInQty,
    	  0 SumOutQty
    	  From Storage_RM 
    	  Where TicketType <> '归还' 
    	  And Indate <'$BDate'
    	  Group by partno
    
    	  Union all
          --这里需要考虑排除电线
    	  select partno MPartNo,
    	  0 SumInQty,
    	  sum(isnull(outqty,0)) SumOutQty
    	  From Storage_fixBin
    	  Where ptype = '发料'  And TicketStatus <> '借用'
    	  And outdate <'$BDate'
    	  Group by partno
    
       ) as t_rm_befQty
       group by MPartNo
    
       
    ), --再次汇总求期初库存
    RMBefQty(MPartNo,BefQty)
    as
    (
      Select MPartNo, Sum(BefQty) BefQty From RMBeforeQty_tmp
      group by MPartNo
    
    ), --电线入库统计
    CableIn(MPartNo,ProductionIn,BuyIn,InventoryIn,OtherIn,InventoryProfitIn,ReturnIn)
    as
    (
       Select partno MPartNo,
       Sum(isnull(inQty,0)) * 1000  ProductionIn,
       0 BuyIn, 0 InventoryIn, 0 OtherIn, 0 InventoryProfitIn, 0 ReturnIn
       From Storage_Cable 
       Where Indate >='$BDate' and indate <='$EDate 23:59:59'
       group by partno
    
    ),--电线出库统计
    CableOut (MPartNo,PlanOut,SellOut,OutPlanOut,
              InventoryLossesOut,BadMReturnOut,BorrowOut,OtherOut)
    as
    (
       Select partno MPartNo,
       Sum(isnull(outQty,0)) * 1000  PlanOut, 
       0 SellOut,0 OutPlanOut,0 InventoryLossesOut,0 BadMReturnOut,0 BorrowOut,0 OtherOut
       From Storage_Cable 
       Where outdate >='$BDate' and outdate <='$EDate 23:59:59'
       group by partno
    ),
    --材料入库
    RMIn(MPartNo,ProductionIn,BuyIn,InventoryIn,OtherIn,InventoryProfitIn,ReturnIn)
    as
    (
    
       --其他材料---
       Select MPartNo,
       Sum(ProductionIn) ProductionIn,
       Sum(BuyIn) BuyIn,
       Sum(InventoryIn)InventoryIn,
       Sum(OtherIn)OtherIn, 
       Sum(InventoryProfitIn) InventoryProfitIn,
       Sum(ReturnIn)ReturnIn
       From(
    	   Select partno MPartNo,
    	   Case When tickettype='生产缴库' Then isnull(inQty,0)
    			Else 0 End as ProductionIn,
    	   Case When tickettype='采购入库' Then isnull(inQty,0)
    			Else 0 End as BuyIn,
    	   Case When tickettype='盘存入库' Then isnull(inQty,0)
    			Else 0 End as InventoryIn,
    	   Case When tickettype='其它入库' Then isnull(inQty,0)
    			Else 0 End as OtherIn,
    	   Case When tickettype='盘盈入库' Then isnull(inQty,0)
    			Else 0 End as InventoryProfitIn,
    	   Case When tickettype='归还' Then isnull(inQty,0)
    			Else 0 End as ReturnIn
    	   From Storage_RM
    	   Where 
    	   Indate >='$BDate' and indate <='$EDate 23:59:59'
       )as t
       group by MPartNO
      
    
    ), --材料出库
    RMOut(MPartNo,PlanOut,SellOut,OutPlanOut,
    InventoryLossesOut,BadMReturnOut,BorrowOut,OtherOut)
    as
    (
       Select MPartNo,
       Sum(PlanOut) PlanOut,
       Sum(SellOut) SellOut,
       Sum(OutPlanOut) OutPlanOut,
       Sum(InventoryLossesOut) InventoryLossesOut,
       Sum(BadMReturnOut) BadMReturnOut,
       Sum(BorrowOut) BorrowOut,
       Sum(OtherOut) OtherOut
       From(
    	   Select partno MPartNo,
    	   Case When ticketstatus='生产性领料' Then isnull(OutQty,0)
    			Else 0 End as PlanOut,
    	   Case When ticketstatus='销售出库' Then isnull(OutQty,0)
    			Else 0 End as SellOut,
    	   Case When ticketstatus='计划外出库' Then isnull(OutQty,0)
    			Else 0 End as OutPlanOut,
    	   Case When ticketstatus='盘亏出库' Then isnull(OutQty,0)
    			Else 0 End as InventoryLossesOut,
    	   Case When ticketstatus='废料退货' Then -isnull(InQty,0)
    			Else 0 End as BadMReturnOut,
    	   Case When ticketstatus='借用' Then isnull(OutQty,0)
    			Else 0 End as BorrowOut,
    	   Case When ticketstatus='其它出库' Then isnull(OutQty,0)
    			Else 0 End as OtherOut
    	   
    	   From Storage_Fixbin
    	   Where ptype = '发料' 
    	   And Outdate >='$BDate' and Outdate <='$EDate 23:59:59'
       ) as t
       group by MPartNo
    
    
    ),--入库集合
    SetIn(MPartNo,ProductionIn,BuyIn,InventoryIn,OtherIn,InventoryProfitIn,ReturnIn)
    as
    (
      Select * From CableIn
      Union
      Select * From RMIn
    
    ),--出库集合
    SetOut(MPartNo,PlanOut,SellOut,OutPlanOut,
    InventoryLossesOut,BadMReturnOut,BorrowOut,OtherOut)
    as
    (
      Select * From CableOut
      Union
      Select * From RMOut
    
    )
    
    Select *,
    ProductionIn + BuyIn+ InventoryIn +OtherIn +InventoryProfitIn As SumIn,
    PlanOut + SellOut + OutPlanOut + InventoryLossesOut +BadMReturnOut +OtherOut As SumOut,
    BefQty+ProductionIn + BuyIn+ InventoryIn +OtherIn +InventoryProfitIn - (PlanOut + SellOut + OutPlanOut + InventoryLossesOut +BadMReturnOut +OtherOut)As Inventory
    From
    (
    	select RM.*,BefQty,
    	isnull(ProductionIn,0) ProductionIn,
    	isnull(BuyIn,0) BuyIn,
    	isnull(InventoryIn,0) InventoryIn,
    	isnull(OtherIn,0) OtherIn,
    	isnull(InventoryProfitIn,0) InventoryProfitIn,
    	isnull(ReturnIn,0) ReturnIn,
    	isnull(PlanOut,0) PlanOut,
    	isnull(SellOut,0) SellOut,
    	isnull(OutPlanOut,0) OutPlanOut,
    	isnull(InventoryLossesOut,0) InventoryLossesOut,
    	isnull(BadMReturnOut,0) BadMReturnOut,
    	isnull(BorrowOut,0) BorrowOut,
    	isnull(OtherOut,0) OtherOut
        from 
    	RM left join RMBefQty On RM.MPartNo=RMBefQty.MPartNo
    	   left join SetIn  On RM.MPartNo=SetIn.MPartNo
    	   left join SetOut On RM.MPartNo=SetOut.MPartNo
    ) as t
    Where 1=1
    $Condition         
    
    
  • 相关阅读:
    ARC 117 D
    Maven依赖踩坑记录
    MobaXterm连接本地CentOS7
    Git在IDEA下的常用操作
    mq消息中间件
    nginx的作用
    Git的使用
    docker
    redis
    导出excel
  • 原文地址:https://www.cnblogs.com/wdfrog/p/2245791.html
Copyright © 2011-2022 走看看