金蝶K3库存账龄分析表(优化)

Set NoCount On 
 SET ANSI_WARNINGS OFF 
 Create Table #Happen2(
        FItemID int Null, 
        FStockID int Null, 
        FBatchNo NVARCHAR(200), 
        FQty decimal(28,10) Null, 
        FCUUnitQty decimal(28,10) Null, 
        FQty1 Decimal(28,10), 
        FCUUnitQty1 Decimal(28,10), 
        FAmount1 Decimal(28,10), 
        FQty2 Decimal(28,10), 
        FCUUnitQty2 Decimal(28,10), 
        FAmount2 Decimal(28,10), 
        FQty3 Decimal(28,10), 
        FCUUnitQty3 Decimal(28,10), 
        FAmount3 Decimal(28,10), 
        FQty4 Decimal(28,10), 
        FCUUnitQty4 Decimal(28,10), 
        FAmount4 Decimal(28,10), 
        FQty5 Decimal(28,10), 
        FCUUnitQty5 Decimal(28,10), 
        FAmount5 Decimal(28,10), 
        FQty6 Decimal(28,10), 
        FCUUnitQty6 Decimal(28,10), 
        FAmount6 Decimal(28,10), 
        FTemp bit ,FPrice Decimal(28,10),FCUPrice Decimal(28,10),FAmount Decimal(28,10))
 Create Table #Happen(
        FItemID int Null, 
        FStockID int Null, 
        FBatchNo NVARCHAR(200), 
        FQty decimal(28,10) Null, 
        FCUUnitQty decimal(28,10) Null, 
        FQty1 Decimal(28,10), 
        FCUUnitQty1 Decimal(28,10), 
        FAmount1 Decimal(28,10), 
        FQty2 Decimal(28,10), 
        FCUUnitQty2 Decimal(28,10), 
        FAmount2 Decimal(28,10), 
        FQty3 Decimal(28,10), 
        FCUUnitQty3 Decimal(28,10), 
        FAmount3 Decimal(28,10), 
        FQty4 Decimal(28,10), 
        FCUUnitQty4 Decimal(28,10), 
        FAmount4 Decimal(28,10), 
        FQty5 Decimal(28,10), 
        FCUUnitQty5 Decimal(28,10), 
        FAmount5 Decimal(28,10), 
        FQty6 Decimal(28,10), 
        FCUUnitQty6 Decimal(28,10), 
        FAmount6 Decimal(28,10), 
        FTemp bit ,FPrice Decimal(28,10),FCUPrice Decimal(28,10),FAmount Decimal(28,10))
 Create Table #Happen1(
        FItemID int Null, 
        FStockID int Null, 
        FBatchNo NVARCHAR(200), 
        FQty decimal(28,10) Null, 
        FCUUnitQty decimal(28,10) Null, 
FQty1 Decimal(28,10), 
FCUUnitQty1 Decimal(28,10), 
FQty2 Decimal(28,10), 
FCUUnitQty2 Decimal(28,10), 
FQty3 Decimal(28,10), 
FCUUnitQty3 Decimal(28,10), 
FQty4 Decimal(28,10), 
FCUUnitQty4 Decimal(28,10), 
FQty5 Decimal(28,10), 
FCUUnitQty5 Decimal(28,10), 
FQty6 Decimal(28,10), 
FCUUnitQty6 Decimal(28,10), 
 FTemp bit ,FPrice Decimal(28,10),FCUPrice Decimal(28,10),FAmount Decimal(28,10) )
  Insert Into #Happen1
  Select t1.FItemID,t2.FItemID As FStockID,t6.FBatchNo,0,0,
(Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-29,Getdate()),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-0,Getdate()),101)) Then t5.FRob*t6.FQty Else 0 End)  As FQty1,
((Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-29,Getdate()),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-0,Getdate()),101)) Then CAST(t5.FRob*t6.FQty AS DECIMAL(28,10)) Else 0 End))/t7.FCoefficient  As FCUUnitQty1,
(Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-59,Getdate()),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-30,Getdate()),101)) Then t5.FRob*t6.FQty Else 0 End)  As FQty2,
((Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-59,Getdate()),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-30,Getdate()),101)) Then CAST(t5.FRob*t6.FQty AS DECIMAL(28,10)) Else 0 End))/t7.FCoefficient  As FCUUnitQty2,
(Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-89,Getdate()),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-60,Getdate()),101)) Then t5.FRob*t6.FQty Else 0 End)  As FQty3,
((Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-89,Getdate()),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-60,Getdate()),101)) Then CAST(t5.FRob*t6.FQty AS DECIMAL(28,10)) Else 0 End))/t7.FCoefficient  As FCUUnitQty3,
(Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-179,Getdate()),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-90,Getdate()),101)) Then t5.FRob*t6.FQty Else 0 End)  As FQty4,
((Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-179,Getdate()),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-90,Getdate()),101)) Then CAST(t5.FRob*t6.FQty AS DECIMAL(28,10)) Else 0 End))/t7.FCoefficient  As FCUUnitQty4,
(Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-359,Getdate()),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-180,Getdate()),101)) Then t5.FRob*t6.FQty Else 0 End)  As FQty5,
((Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-359,Getdate()),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-180,Getdate()),101)) Then CAST(t5.FRob*t6.FQty AS DECIMAL(28,10)) Else 0 End))/t7.FCoefficient  As FCUUnitQty5,
(Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-360,Getdate()),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-360,Getdate()),101)) Then t5.FRob*t6.FQty Else 0 End)  As FQty6,
((Case When t5.FDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-360,Getdate()),101)) And t5.FDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-360,Getdate()),101)) Then CAST(t5.FRob*t6.FQty AS DECIMAL(28,10)) Else 0 End))/t7.FCoefficient  As FCUUnitQty6,
1  ,ISNULL(((SELECT t12.FBegBal/t12.FBegQty FROM t_ICItem t11
 INNER JOIN (SELECT FItemID,SUM(FBegBal) AS FBegBal,SUM(FBegQty) AS FBegQty FROM ICBal t13
 Where t13.FItemID = t6.FItemID And t13.FYear = (select FValue from t_SystemProfile where FCategory='IC' and FKey='CurrentYear') And t13.FPeriod = (select FValue from t_SystemProfile where FCategory='IC' and FKey='CurrentPeriod')--And t13.FYear = 2017 And t13.FPeriod = 10
 GROUP BY t13.FItemID) t12 ON t11.FItemID=t12.FItemID AND t12.FBegBal>0 AND t12.FBegQty>0) ),0),0,0
 From t_ICItem t1
Join ICStockBill t5 On (t5.FStatus > 0 Or (t5.FUpStockWhenSave > 0 And t5.FCancellation <1 join="" icstockbillentry="" t6="" on="" t5="" finterid="t6.FInterID" left="" join="" t_measureunit="" t7="" on="" t1="" fstoreunitid="t7.FMeasureUnitID" left="" join="" t_stock="" t2="" on="" t2="" fitemid="(case" when="" t5="" ftrantype="24" then="" t6="" fscstockid="" else="" t6="" fdcstockid="" end="" where="" t1="" fitemid="t6.FItemID" and="" t5="" ftrantype="" in="" 1="" 2="" 5="" 10="" 40="" and="" t5="" frob="1)" or="" t5="" ftrantype="" in="" 21="" 24="" 28="" 29="" and="" t5="" frob="-1))" and="" not="" t5="" ftrantype="" in="" 1="" and="" t5="" fpomode="36681" and="" not="" t5="" ftrantype="1" and="" t6="" fsourceinterid=""> 0 and EXISTS(SELECT 1 FROM ICHookRelations t8 where t6.FinterID=t8.fIBInterID and t8.FIBTag=4 )))
 And t2.FTypeID NOT IN (504)--And t1.FNumber='041-017981-00' And t1. FNumber='041-017981-00' --如果要限定物料编码,可以启用此条件
 AND t1.FDeleted=0

  Insert Into #Happen1
  Select t1.FItemID,t2.FItemID As FStockID,t6.FBatchNo,0,0,
(Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-29,Getdate()),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-0,Getdate()),101)) Then t6.FBegQty Else 0 End)  As FQty1,
((Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-29,Getdate()),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-0,Getdate()),101)) Then t6.FBegQty Else 0 End))/t7.FCoefficient  As FCUUnitQty1,
(Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-59,Getdate()),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-30,Getdate()),101)) Then t6.FBegQty Else 0 End)  As FQty2,
((Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-59,Getdate()),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-30,Getdate()),101)) Then t6.FBegQty Else 0 End))/t7.FCoefficient  As FCUUnitQty2,
(Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-89,Getdate()),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-60,Getdate()),101)) Then t6.FBegQty Else 0 End)  As FQty3,
((Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-89,Getdate()),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-60,Getdate()),101)) Then t6.FBegQty Else 0 End))/t7.FCoefficient  As FCUUnitQty3,
(Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-179,Getdate()),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-90,Getdate()),101)) Then t6.FBegQty Else 0 End)  As FQty4,
((Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-179,Getdate()),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-90,Getdate()),101)) Then t6.FBegQty Else 0 End))/t7.FCoefficient  As FCUUnitQty4,
(Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-359,Getdate()),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-180,Getdate()),101)) Then t6.FBegQty Else 0 End)  As FQty5,
((Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-359,Getdate()),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-180,Getdate()),101)) Then t6.FBegQty Else 0 End))/t7.FCoefficient  As FCUUnitQty5,
(Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-360,Getdate()),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-360,Getdate()),101)) Then t6.FBegQty Else 0 End)  As FQty6,
((Case When t6.FStockInDate>=Convert(DateTime,Convert(Varchar,DATEADD(dd,-360,Getdate()),101)) And t6.FStockInDate<=Convert(DateTime,Convert(Varchar,DATEADD(dd,-360,Getdate()),101)) Then t6.FBegQty Else 0 End))/t7.FCoefficient  As FCUUnitQty6,
1   ,ISNULL(((SELECT t12.FBegBal/t12.FBegQty FROM t_ICItem t11
 INNER JOIN (SELECT FItemID,SUM(FBegBal) AS FBegBal,SUM(FBegQty) AS FBegQty FROM ICBal t13
 Where t13.FItemID = t6.FItemID And t13.FYear = (select FValue from t_SystemProfile where FCategory='IC' and FKey='CurrentYear') And t13.FPeriod = (select FValue from t_SystemProfile where FCategory='IC' and FKey='CurrentPeriod')--And t13.FYear = 2017 And t13.FPeriod = 10
 GROUP BY t13.FItemID) t12 ON t11.FItemID=t12.FItemID AND t12.FBegBal>0 AND t12.FBegQty>0) ),0),0,0

From t_ICItem t1
Join ICInvInitial t6 On t1.FItemID = t6.FItemID
Left Join t_MeasureUnit t7 On t1.FStoreUnitID=t7.FMeasureUnitID
Left Join t_Stock t2 On t2.FItemID = t6.FStockID
 Where 1=1  And t2.FTypeID NOT IN (504)--And t1.FNumber='041-017981-00' And t1. FNumber='041-017981-00' --如果要限定物料编码,可以启用此条件
 AND t1.FDeleted=0

 Insert Into #Happen1 
Select t1.FItemID,t2.FItemID As FStockID,t3.FBatchNo,(t3.FQTY) As FQTY,CAST(t3.FQTY AS DECIMAL(28,10))/t7.FCoefficient As FCUUnitQty,0,0,0,0,0,0,0,0,0,0,0,0,1   ,ISNULL(((SELECT t12.FBegBal/t12.FBegQty FROM t_ICItem t11
 INNER JOIN (SELECT FItemID,SUM(FBegBal) AS FBegBal,SUM(FBegQty) AS FBegQty FROM ICBal t13
 Where t13.FItemID = t3.FItemID And t13.FYear = (select FValue from t_SystemProfile where FCategory='IC' and FKey='CurrentYear') And t13.FPeriod = (select FValue from t_SystemProfile where FCategory='IC' and FKey='CurrentPeriod')--And t13.FYear = 2017 And t13.FPeriod = 10
 GROUP BY t13.FItemID) t12 ON t11.FItemID=t12.FItemID AND t12.FBegBal>0 AND t12.FBegQty>0) ),0),0,0

From t_ICItem t1
 Join ICINVENTORY t3 On t1.FItemID = t3.FItemID 
Left Join t_MeasureUnit t7 On t1.FStoreUnitID=t7.FMeasureUnitID
Left Join t_Stock t2 On t2.FItemID = t3.FStockID
Where 1=1
 And t2.FTypeID NOT IN (504)--And t1.FNumber='041-017981-00' And t1. FNumber='041-017981-00' --如果要限定物料编码,可以启用此条件
 AND t1.FDeleted=0

 Insert Into #HAPPEN2
Select t1.FITEMID,0,t1.FBatchNo,Sum(FQTY)As FQTY,Sum(FCUUnitQTY)As FCUUnitQTY,
Sum(fqty1) As FQty1 ,Sum(fCUUnitqty1) As FCUUnitQty1 ,0,Sum(fqty2) As FQty2 ,Sum(fCUUnitqty2) As FCUUnitQty2 ,0,Sum(fqty3) As FQty3 ,Sum(fCUUnitqty3) As FCUUnitQty3 ,0,Sum(fqty4) As FQty4 ,Sum(fCUUnitqty4) As FCUUnitQty4 ,0,Sum(fqty5) As FQty5 ,Sum(fCUUnitqty5) As FCUUnitQty5 ,0,Sum(fqty6) As FQty6 ,Sum(fCUUnitqty6) As FCUUnitQty6 ,0,1,Min(FPrice),case Sum(FCUUnitQTY) when 0 then 0 else (Min(FPrice)*Sum(FQTY))/Sum(FCUUnitQTY) end,Min(FPrice)*Sum(FQTY) 
From #HAPPEN1 t1 INNER JOIN t_ICItem t2 ON t1.FItemID=t2.FItemID  
GROUP By t1.FITEMID,t1.FBatchNo  Update #Happen2 Set FQty1= FQty,FQty2=0
,FQty3=0
,FQty4=0
,FQty5=0
,FQty6=0
 Where  FQty-FQty1<0 
 Update #Happen2 Set FQty2= FQty-FQty1,FQty3=0
,FQty4=0
,FQty5=0
,FQty6=0
 Where  FQty-FQty1-FQty2<0 
 Update #Happen2 Set FQty3= FQty-FQty1-FQty2,FQty4=0
,FQty5=0
,FQty6=0
 Where  FQty-FQty1-FQty2-FQty3<0 
 Update #Happen2 Set FQty4= FQty-FQty1-FQty2-FQty3,FQty5=0
,FQty6=0
 Where  FQty-FQty1-FQty2-FQty3-FQty4<0 
 Update #Happen2 Set FQty5= FQty-FQty1-FQty2-FQty3-FQty4,FQty6=0
 Where  FQty-FQty1-FQty2-FQty3-FQty4-FQty5<0 
 Update #Happen2 Set FQty6= FQty-FQty1-FQty2-FQty3-FQty4-FQty5
Update #Happen2 Set FAmount1=FPrice*FQty1
Update #Happen2 Set FAmount2=FPrice*FQty2
Update #Happen2 Set FAmount3=FPrice*FQty3
Update #Happen2 Set FAmount4=FPrice*FQty4
Update #Happen2 Set FAmount5=FPrice*FQty5
Update #Happen2 Set FAmount6=FPrice*FQty6

 Update #Happen2 Set FCUUnitQty1= FCUUnitQty,FCUUnitQty2=0
,FCUUnitQty3=0
,FCUUnitQty4=0
,FCUUnitQty5=0
,FCUUnitQty6=0
 Where  FCUUnitQty-FCUUnitQty1<0 
 Update #Happen2 Set FCUUnitQty2= FCUUnitQty-FCUUnitQty1
,FCUUnitQty3=0
,FCUUnitQty4=0
,FCUUnitQty5=0
,FCUUnitQty6=0
 Where  FCUUnitQty-FCUUnitQty1-FCUUnitQty2<0 
 Update #Happen2 Set FCUUnitQty3= FCUUnitQty-FCUUnitQty1
-FCUUnitQty2
,FCUUnitQty4=0
,FCUUnitQty5=0
,FCUUnitQty6=0
 Where  FCUUnitQty-FCUUnitQty1-FCUUnitQty2-FCUUnitQty3<0 
 Update #Happen2 Set FCUUnitQty4= FCUUnitQty-FCUUnitQty1
-FCUUnitQty2
-FCUUnitQty3
,FCUUnitQty5=0
,FCUUnitQty6=0
 Where  FCUUnitQty-FCUUnitQty1-FCUUnitQty2-FCUUnitQty3-FCUUnitQty4<0 
 Update #Happen2 Set FCUUnitQty5= FCUUnitQty-FCUUnitQty1
-FCUUnitQty2
-FCUUnitQty3
-FCUUnitQty4
,FCUUnitQty6=0
 Where  FCUUnitQty-FCUUnitQty1-FCUUnitQty2-FCUUnitQty3-FCUUnitQty4-FCUUnitQty5<0 update="" happen2="" set="" fcuunitqty6="FCUUnitQty-FCUUnitQty1" -fcuunitqty2="" -fcuunitqty3="" -fcuunitqty4="" -fcuunitqty5="" insert="" into="" happen="" select="" t1="" fitemid="" 0="" t1="" fbatchno="" sum="" fqty="" as="" fqty="" sum="" fcuunitqty="" as="" fcuunitqty="" sum="" fqty1="" as="" fqty1="" sum="" fcuunitqty1="" as="" fcuunitqty1="" sum="" famount1="" as="" famount1="" sum="" fqty2="" as="" fqty2="" sum="" fcuunitqty2="" as="" fcuunitqty2="" sum="" famount2="" as="" famount2="" sum="" fqty3="" as="" fqty3="" sum="" fcuunitqty3="" as="" fcuunitqty3="" sum="" famount3="" as="" famount3="" sum="" fqty4="" as="" fqty4="" sum="" fcuunitqty4="" as="" fcuunitqty4="" sum="" famount4="" as="" famount4="" sum="" fqty5="" as="" fqty5="" sum="" fcuunitqty5="" as="" fcuunitqty5="" sum="" famount5="" as="" famount5="" sum="" fqty6="" as="" fqty6="" sum="" fcuunitqty6="" as="" fcuunitqty6="" sum="" famount6="" as="" famount6="" 1="" min="" fprice="" case="" sum="" fcuunitqty="" when="" 0="" then="" 0="" else="" min="" fprice="" sum="" fqty="" sum="" fcuunitqty="" end="" min="" fprice="" sum="" fqty="" from="" happen2="" t1="" inner="" join="" t_icitem="" t2="" on="" t1="" fitemid="t2.FItemID" group="" by="" t1="" fitemid="" t1="" fbatchno="" having="" sum="" fqty="">=0) 
CREATE TABLE #DATA(
     FNumber  Varchar(355) null,
     FShortNumber  Varchar(355) null,
     FName  Varchar(355) null,
     FModel  Varchar(355) null,
     FUnitName  Varchar(355) null,
     FCUUnitName  Varchar(355) null,
     FQtyDecimal smallint null, 
     FPriceDecimal smallint null, 
     FQty Decimal(28,10) Null, 
     FCUUnitQty Decimal(28,10) Null, 
     FPrice Decimal(28,10) NULL, 
     FCUPrice Decimal(28,10) Null, 
     FAmount Decimal(28,10) Null, 
 FQty1 Decimal(28,10),
 FCUUnitQty1 Decimal(28,10),
 FAmount1 Decimal(28,10),
 FQty2 Decimal(28,10),
 FCUUnitQty2 Decimal(28,10),
 FAmount2 Decimal(28,10),
 FQty3 Decimal(28,10),
 FCUUnitQty3 Decimal(28,10),
 FAmount3 Decimal(28,10),
 FQty4 Decimal(28,10),
 FCUUnitQty4 Decimal(28,10),
 FAmount4 Decimal(28,10),
 FQty5 Decimal(28,10),
 FCUUnitQty5 Decimal(28,10),
 FAmount5 Decimal(28,10),
 FQty6 Decimal(28,10),
 FCUUnitQty6 Decimal(28,10),
 FAmount6 Decimal(28,10),
     FSumSort smallint not null Default(0),
Flevel0 Decimal(10,3), 
Flevel1 Decimal(10,3), 
Flevel2 Decimal(10,3), 
Flevel3 Decimal(10,3), 
Flevel4 Decimal(10,3), 
Flevel5 Decimal(10,3), 
Flevel6 Decimal(10,3), 

     FID int IDENTITY)

  INSERT INTO #DATA (
FNumber,FShortNumber,FName,FModel,FUnitName,FCUUnitName,
 FQtyDecimal,FPriceDecimal,FQty,FCUUnitQty,FPrice,FCUPrice,FAmount,FQty1,
FCUUnitQty1,
FAmount1,
FQty2,
FCUUnitQty2,
FAmount2,
FQty3,
FCUUnitQty3,
FAmount3,
FQty4,
FCUUnitQty4,
FAmount4,
FQty5,
FCUUnitQty5,
FAmount5,
FQty6,
FCUUnitQty6,
FAmount6,
FSumSort)
 SELECT CASE   WHEN GROUPING(t1.FNumber)=1 THEN '合计' 
 ELSE t1.FNumber END, 
'','','','','',MAX(t1.FQtyDecimal),MAX(t1.FPriceDecimal),Sum(FQty),Sum(FCUUnitQty), case Sum(FQty) when 0 then 0 else Sum(FAmount)/Sum(FQty) end,(CASE Sum(FCUUnitQty) WHEN 0 THEN 0 ELSE Sum(FAmount)/Sum(FCUUnitQty) END), sum(FAmount), SUM(FQty1),
 SUM(FCUUnitQty1),
 SUM(FAmount1),
 SUM(FQty2),
 SUM(FCUUnitQty2),
 SUM(FAmount2),
 SUM(FQty3),
 SUM(FCUUnitQty3),
 SUM(FAmount3),
 SUM(FQty4),
 SUM(FCUUnitQty4),
 SUM(FAmount4),
 SUM(FQty5),
 SUM(FCUUnitQty5),
 SUM(FAmount5),
 SUM(FQty6),
 SUM(FCUUnitQty6),
 SUM(FAmount6),

 CASE  WHEN GROUPING(t1.FNumber)=1 THEN 101 
 ELSE 0 END  FROM #Happen v2
 Inner Join t_ICItem t1 On v2.FItemID=t1.FItemID
 Left Join t_Stock t2 On v2.FStockID=t2.FItemID
 Where 1=1




Group by t1.FNumber WITH ROLLUP Having Sum(FQty)>0 

 Update t1 Set t1.FName=t2.FName,t1.FShortNumber=t2.FShortNumber,t1.FModel=t2.FModel, t1.FUnitName=t3.FName,t1.FCUUnitName=t4.FName ,t1.FQtyDecimal=t2.FQtyDecimal,t1.FPriceDecimal=t2.FPriceDecimal  From #DATA t1,t_ICItem t2,t_MeasureUnit t3,t_MeasureUnit t4  Where t1.FNumber=t2.FNumber  And t2.FUnitGroupID=t3.FUnitGroupID  And t2.FStoreUnitID=t4.FMeasureUnitID  And t3.FStandard=1

SELECT FNumber 物料编码,FName 物料名称,FUnitName 基本计量单位,FCUUnitName 库存单位,FQty 库存数量,FPrice 单价,FAmount 金额,
Fqty1 '0-29天数量',fAmount1 '0-29天金额',Fqty2 '30-59天数量',fAmount2 '30-59天金额',Fqty3 '60-89天数量',fAmount3 '60-89天金额',Fqty4 '90-179天数量',fAmount4 '90-179天金额',Fqty5 '180-359天数量',fAmount5 '180-359天金额',Fqty6 '360天以上数量',fAmount6 '360天以上金额' FROM #DATA  
  

DROP TABLE #DATA  

 Drop Table #Happen
 Drop Table #Happen1
 Drop Table #Happen2


  
  
  
  


数量取即时库存。单价依据为期初余额加权平均单价。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值