diff --git a/7.销售预算成本与实际成本分析报表SQL.sql b/7.销售预算成本与实际成本分析报表SQL.sql index 99d9bae..3981588 100644 --- a/7.销售预算成本与实际成本分析报表SQL.sql +++ b/7.销售预算成本与实际成本分析报表SQL.sql @@ -1,66 +1,143 @@ ---ձ + + + SELECT [ͻ],[ͻ],[Ԥ],FCUSTOMERID,FDOCUMENTSTATUS,[FBMMATERIALGROUP],FAPPROVEDATE2,SUM([]-[˻]) AS [] + ,[Ԥܳɱ]=AVG([Ԥ]*[Ԥܳɱ]),[Ԥɱ()-]=AVG([Ԥ]*[Ԥɱ_ϵ]),[Ԥɱ()-]=AVG([Ԥ]*[Ԥɱ_˹]) + ,[Ԥɱ()-]=AVG([Ԥ]*[Ԥɱ_Ʒѵ]),AVG([Ԥ]) AS [Ԥ] + ,[ʵܳɱ]=SUM([ʵܳɱ]),[ʵʳɱ()-]=SUM([ʵʳɱ()-]),[ʵʳɱ()-]=SUM([ʵʳɱ()-]),[ʵʳɱ()-]=SUM([ʵʳɱ()-]) + ,AVG([Ԥܳɱ]) AS [Ԥܳɱ],AVG([Ԥɱ_ϵ]) AS [Ԥɱ_ϵ],AVG([Ԥɱ_˹]) AS [Ԥɱ_˹],AVG([Ԥɱ_Ʒѵ]) AS [Ԥɱ_Ʒѵ] + INTO #TempResultTable + FROM ( SELECT - t3.FNUMBER AS [ͻ], + t3.FNUMBER AS [ͻ],t2.FMATERIALID, t4.FNAME AS [ͻ], t5.FNUMBER AS [Ԥ], T1.FCUSTOMERID,t1.FDOCUMENTSTATUS -, cc.[FBMMATERIALGROUP],SUM(FRealQty) AS FRealQty -,(SELECT SUM(FREALQTY) FROM dbo.T_SAL_RETURNSTOCK tui LEFT JOIN T_SAL_RETURNSTOCKENTRY tuide ON tui.FID=tuide.FID - WHERE tui.FAPPROVEDATE>='2025-05-01' AND tui.FAPPROVEDATE<'2025-06-01' AND tui.FDOCUMENTSTATUS='C' -) ReturnQty -,( -select sum(FALLAMOUNT) - from VHUB_T_BMGStandCost where 1=1 ) as F_YSZCB +, cc.[FBMMATERIALGROUP],SUM(FRealQty) AS [] +,ISNULL((SELECT bb.MonthValue FROM #TempNianDuXiaoShouYuSuan bb WHERE bb.FAPPROVEDATE=FORMAT(t1.FAPPROVEDATE, 'yyyy-MM-01') + AND bb.FBMMATERIALGROUP= cc.[FBMMATERIALGROUP] AND bb.FCUSTOMERID=T1.FCUSTOMERID),0) [Ԥ] +,ISNULL((SELECT SUM(FREALQTY) FROM dbo.T_SAL_RETURNSTOCK tui LEFT JOIN T_SAL_RETURNSTOCKENTRY tuide ON tui.FID=tuide.FID + WHERE FORMAT(tui.FAPPROVEDATE, 'yyyy-MM-01') = FORMAT(t1.FAPPROVEDATE, 'yyyy-MM-01') AND tui.FDOCUMENTSTATUS='C' AND t2.FMATERIALID=tuide.FMATERIALID +),0) [˻] +,FORMAT(t1.FAPPROVEDATE, 'yyyy-MM-01') AS FAPPROVEDATE2 +,ISNULL(AVG(cost.FALLAMOUNT),0) AS [Ԥܳɱ],ISNULL(AVG(cost.FMATERIALCOSTAMOUNT),0) AS [Ԥɱ_ϵ],ISNULL(AVG(cost.FLABORCOSTAMOUNT),0) [Ԥɱ_˹] +,ISNULL(AVG(FLABORCOSTAMOUNT),0) AS [Ԥɱ_Ʒѵ] + ,( ISNULL((SELECT SUM(FAMOUNT_LC) FROM #XiaoShouChengBen bbb WHERE bbb.FMaterialID=T2.FMaterialID AND bbb.FCustomerID=T1.FCUSTOMERID AND bbb.FAPPROVEDATE2=FORMAT(t1.FAPPROVEDATE, 'yyyy-MM-01') ),0)- + ISNULL((SELECT SUM(FAMOUNT_LC) FROM #TuiHuoChengBen bbb WHERE bbb.FMaterialID=T2.FMaterialID AND bbb.FRETCUSTID=T1.FCUSTOMERID AND bbb.FAPPROVEDATE2=FORMAT(t1.FAPPROVEDATE, 'yyyy-MM-01') ),0)) AS [ʵܳɱ] + ,( ISNULL((SELECT SUM(FAMOUNT_LC) FROM #XiaoShouChengBen bbb WHERE bbb.FMaterialID=T2.FMaterialID AND bbb.FCustomerID=T1.FCUSTOMERID AND bbb.FAPPROVEDATE2=FORMAT(t1.FAPPROVEDATE, 'yyyy-MM-01') AND fname='ϳɱ'),0)- + ISNULL((SELECT SUM(FAMOUNT_LC) FROM #TuiHuoChengBen bbb WHERE bbb.FMaterialID=T2.FMaterialID AND bbb.FRETCUSTID=T1.FCUSTOMERID AND bbb.FAPPROVEDATE2=FORMAT(t1.FAPPROVEDATE, 'yyyy-MM-01') AND fname='ϳɱ' ),0)) AS [ʵʳɱ()-] + ,( ISNULL((SELECT SUM(FAMOUNT_LC) FROM #XiaoShouChengBen bbb WHERE bbb.FMaterialID=T2.FMaterialID AND bbb.FCustomerID=T1.FCUSTOMERID AND bbb.FAPPROVEDATE2=FORMAT(t1.FAPPROVEDATE, 'yyyy-MM-01') AND fname IN ('','ίӹ')),0)- + ISNULL((SELECT SUM(FAMOUNT_LC) FROM #TuiHuoChengBen bbb WHERE bbb.FMaterialID=T2.FMaterialID AND bbb.FRETCUSTID=T1.FCUSTOMERID AND bbb.FAPPROVEDATE2=FORMAT(t1.FAPPROVEDATE, 'yyyy-MM-01') AND fname IN ('','ίӹ') ),0)) AS [ʵʳɱ()-] + ,( ISNULL((SELECT SUM(FAMOUNT_LC) FROM #XiaoShouChengBen bbb WHERE bbb.FMaterialID=T2.FMaterialID AND bbb.FCustomerID=T1.FCUSTOMERID AND bbb.FAPPROVEDATE2=FORMAT(t1.FAPPROVEDATE, 'yyyy-MM-01') AND fname=''),0)- + ISNULL((SELECT SUM(FAMOUNT_LC) FROM #TuiHuoChengBen bbb WHERE bbb.FMaterialID=T2.FMaterialID AND bbb.FRETCUSTID=T1.FCUSTOMERID AND bbb.FAPPROVEDATE2=FORMAT(t1.FAPPROVEDATE, 'yyyy-MM-01') AND fname='' ),0)) AS [ʵʳɱ()-] - ,( -select sum(FMATERIALCOSTAMOUNT) - from VHUB_T_BMGStandCost where 1=1 ) as F_YSZCB_Z - ,( -select sum(FLABORCOSTAMOUNT) - from VHUB_T_BMGStandCost where 1=1 ) as F_YSCB_G_Z - ,( -select sum(FFEEAMOUNT) - from VHUB_T_BMGStandCost where 1=1 ) as F_YSCB_F_Z FROM T_SAL_OUTSTOCK T1 - INNER join T_SAL_OUTSTOCKENTRY T2 ON T1.FID = T2.FID + INNER JOIN T_SAL_OUTSTOCKENTRY T2 ON T1.FID = T2.FID INNER JOIN T_BD_MATERIAL matal2 ON T2.FMATERIALID = matal2.FMATERIALID INNER JOIN VHUB_T_BMMGroupLinkTable cc ON matal2.FMATERIALGROUP = cc.[FMATERIALGROUP] LEFT JOIN T_BD_CUSTOMER t3 ON t1.FCUSTOMERID= t3.FCUSTID LEFT JOIN T_BD_CUSTOMER_L t4 ON t3.FCUSTID = t4.FCUSTID INNER JOIN VHUB_BD_BMMaterialGroup t5 ON cc.[FBMMATERIALGROUP]= t5.FID - WHERE T1.FAPPROVEDATE>='2025-05-01' AND t1.FAPPROVEDATE<'2025-06-01' - GROUP BY T1.FCUSTOMERID, cc.[FBMMATERIALGROUP],t1.FDOCUMENTSTATUS, t3.FNUMBER , - t4.FNAME , t5.FNUMBER + LEFT JOIN VHUB_T_BMGStandCost cost ON cost.FDATE= FORMAT(t1.FAPPROVEDATE, 'yyyy-MM-01') AND cost.FBMMATERIALGROUP= t5.FID + WHERE T1.FAPPROVEDATE>='2025-01-01' AND t1.FAPPROVEDATE<'2025-06-01' + GROUP BY T1.FCUSTOMERID, cc.[FBMMATERIALGROUP],t1.FDOCUMENTSTATUS, t3.FNUMBER , t2.FMATERIALID, + t4.FNAME , t5.FNUMBER , FORMAT(t1.FAPPROVEDATE, 'yyyy-MM-01') ) a + GROUP BY [ͻ],[ͻ],[Ԥ],FCUSTOMERID,FDOCUMENTSTATUS,[FBMMATERIALGROUP],FAPPROVEDATE2 + + --WHERE a.FCUSTOMERID=641983 AND a.FBMMATERIALGROUP=941609 + SELECT *,[λɱ]=[λԤɱ]-[λʵܳɱ],[-]=[Ԥɱ()-]-[ʵʳɱ()-],[-]=[Ԥɱ()-]-[ʵʳɱ()-],[-]=[Ԥɱ()-]-[ʵʳɱ()-] + FROM ( + SELECT *,[Ԥʵ]=[Ԥ]-[],[Ԥʵܳɱ]=[Ԥܳɱ]-[ʵܳɱ] + ,[-]=[Ԥɱ()-]-[ʵʳɱ()-] ,[-ܹ]=[Ԥɱ()-]-[ʵʳɱ()-],[-ܷ]=[Ԥɱ()-]-[ʵʳɱ()-] + ,[λԤɱ]=CASE WHEN [Ԥ]!=0 then [Ԥܳɱ]/[Ԥ] ELSE 0 END + ,[Ԥɱ()-]=CASE WHEN [Ԥ]!=0 then [Ԥɱ()-]/[Ԥ] ELSE 0 END + ,[Ԥɱ()-]=CASE WHEN [Ԥ]!=0 then [Ԥɱ()-]/[Ԥ] ELSE 0 END + ,[Ԥɱ()-]=CASE WHEN [Ԥ]!=0 then [Ԥɱ()-]/[Ԥ] ELSE 0 END + ,[λʵܳɱ]=CASE WHEN []!=0 then [ʵܳɱ]/[] ELSE 0 END + ,[ʵʳɱ()-]=CASE WHEN []!=0 then [ʵʳɱ()-]/[] ELSE 0 END + ,[ʵʳɱ()-]=CASE WHEN []!=0 then [ʵʳɱ()-]/[] ELSE 0 END + ,[ʵʳɱ()-]=CASE WHEN []!=0 then [ʵʳɱ()-]/[] ELSE 0 END + FROM #TempResultTable) a + + DROP TABLE #TempResultTable +-- LEFT JOIN (SELECT SUM(FREALQTY),FORMAT(tui.FAPPROVEDATE, 'yyyy-MM-01') AS FAPPROVEDATE FROM dbo.T_SAL_RETURNSTOCK tui LEFT JOIN T_SAL_RETURNSTOCKENTRY tuide ON tui.FID=tuide.FID +-- WHERE tui.FAPPROVEDATE>='2025-01-01' AND tui.FAPPROVEDATE<'2025-06-01' AND tui.FDOCUMENTSTATUS='C' +--) Return11 ON --SELECT * FROM VHUB_T_BMMGroupLinkTable -- SELECT * FROM VHUB_BD_BMMaterialGroup -- ۳ɱѯSQL - SELECT a.FMaterialID,a.FNUMBER,a.FNAME,SUM(FMustQty) AS FMustQty,SUM(a.FAMOUNT_LC) AS FAMOUNT_LC FROM ( -select T1.FID, T1.FBILLNO,T2.FENTRYID,t2.FMaterialID,ff.FNUMBER, FMustQty ,t4.FAMOUNT_LC,T6.FNAME -from T_SAL_OUTSTOCK T1 inner join T_SAL_OUTSTOCKENTRY T2 -inner join T_SAL_OUTSTOCKENTRY_C T3 on T3.FENTRYID = T2.FENTRYID + DROP TABLE #XiaoShouChengBen + SELECT a.FCustomerID,a.FMaterialID,a.FNUMBER,a.FNAME,SUM(FREALQTY) AS RealQty,SUM(a.FAMOUNT_LC) AS FAMOUNT_LC,FAPPROVEDATE2 INTO #XiaoShouChengBen FROM ( +SELECT t1.FCustomerID,T1.FID, T1.FBILLNO,T2.FENTRYID,t2.FMaterialID,ff.FNUMBER, T2.FREALQTY ,t4.FAMOUNT_LC,T6.FNAME , FORMAT(t1.FAPPROVEDATE, 'yyyy-MM-01') AS FAPPROVEDATE2 +FROM T_SAL_OUTSTOCK T1 INNER JOIN T_SAL_OUTSTOCKENTRY T2 +INNER JOIN T_SAL_OUTSTOCKENTRY_C T3 ON T3.FENTRYID = T2.FENTRYID ON T1.FID = T2.FID - inner join T_SAL_OUTSTOCKENTRY_CE T4 on T3.FENTRYID = T4.FENTRYID - left join T_HS_CALDIMENSIONS T5 on T3.FDIMENSIONID = T5.FDIMENSIONID - left join T_BD_EXPENSE_L T6 on T4.FEXPENSEID = T6.FEXPID and T6.FLOCALEID = 2052 - left join T_BD_MATERIAL ff on t2.FMaterialID=ff.FMaterialID - WHERE T1.FAPPROVEDATE>='2025-05-01' AND t1.FAPPROVEDATE<'2025-06-01') a -GROUP BY a.FMaterialID,a.FNUMBER,a.FNAME -ORDER BY FMaterialID + INNER JOIN T_SAL_OUTSTOCKENTRY_CE T4 ON T3.FENTRYID = T4.FENTRYID + LEFT JOIN T_HS_CALDIMENSIONS T5 ON T3.FDIMENSIONID = T5.FDIMENSIONID + LEFT JOIN T_BD_EXPENSE_L T6 ON T4.FEXPENSEID = T6.FEXPID AND T6.FLOCALEID = 2052 + LEFT JOIN T_BD_MATERIAL ff ON t2.FMaterialID=ff.FMaterialID + WHERE T1.FAPPROVEDATE>='2025-01-01' AND t1.FAPPROVEDATE<'2025-06-01') a +GROUP BY a.FCustomerID,a.FMaterialID,a.FNUMBER,a.FNAME,FAPPROVEDATE2 + +ORDER BY a.FCustomerID,FMaterialID,FAPPROVEDATE2 - -- ˻ɱѯSQL -select T1.FID, T1.FBILLNO,T2.FENTRYID,t2.FMaterialID,ff.FNUMBER, FMustQty ,t4.*,T6.* -from T_SAL_RETURNSTOCK T1 inner join T_SAL_RETURNSTOCKENTRY T2 -inner join T_SAL_RETURNSTOCKENTRY_C T3 on T3.FENTRYID = T2.FENTRYID +SELECT * FROM #XiaoShouChengBen + +--SELECT TOP 10 * FROM T_SAL_OUTSTOCKENTRY +-- -- ˻ɱѯSQL +--SELECT T1.FID, T1.FBILLNO,T2.FENTRYID,t2.FMaterialID,ff.FNUMBER, FMustQty ,t4.*,T6.* +--FROM T_SAL_RETURNSTOCK T1 INNER JOIN T_SAL_RETURNSTOCKENTRY T2 +--INNER JOIN T_SAL_RETURNSTOCKENTRY_C T3 ON T3.FENTRYID = T2.FENTRYID +--ON T1.FID = T2.FID +-- INNER JOIN T_SAL_OUTSTOCKENTRY_CE T4 ON T3.FENTRYID = T4.FENTRYID +-- LEFT JOIN T_HS_CALDIMENSIONS T5 ON T3.FDIMENSIONID = T5.FDIMENSIONID +-- LEFT JOIN T_BD_EXPENSE_L T6 ON T4.FEXPENSEID = T6.FEXPID AND T6.FLOCALEID = 2052 +-- LEFT JOIN T_BD_MATERIAL ff ON t2.FMaterialID=ff.FMaterialID +-- WHERE T1.FAPPROVEDATE>='2025-01-01' AND t1.FAPPROVEDATE<'2025-06-01' + +--ORDER BY T2.FENTRYID DESC + +--SELECT * FROM VHUB_T_BMGStandCost + -- ˻ɱѯSQL2 + DROP TABLE #TuiHuoChengBen +SELECT a.FRETCUSTID,a.FMaterialID,a.FNUMBER,a.FNAME,SUM(FREALQTY) AS REALQTY,SUM(a.FAMOUNT_LC) AS FAMOUNT_LC,FAPPROVEDATE2 INTO #TuiHuoChengBen FROM ( +SELECT t1.FRETCUSTID, T1.FID, T1.FBILLNO,T2.FENTRYID,t2.FMaterialID,ff.FNUMBER, FREALQTY ,t4.FAMOUNT_LC,T6.FNAME , FORMAT(t1.FAPPROVEDATE, 'yyyy-MM-01') AS FAPPROVEDATE2 +FROM T_SAL_RETURNSTOCK T1 INNER JOIN T_SAL_RETURNSTOCKENTRY T2 +INNER JOIN T_SAL_RETURNSTOCKENTRY_C T3 ON T3.FENTRYID = T2.FENTRYID ON T1.FID = T2.FID - inner join T_SAL_OUTSTOCKENTRY_CE T4 on T3.FENTRYID = T4.FENTRYID - left join T_HS_CALDIMENSIONS T5 on T3.FDIMENSIONID = T5.FDIMENSIONID - left join T_BD_EXPENSE_L T6 on T4.FEXPENSEID = T6.FEXPID and T6.FLOCALEID = 2052 - left join T_BD_MATERIAL ff on t2.FMaterialID=ff.FMaterialID - WHERE T1.FAPPROVEDATE>='2025-05-01' AND t1.FAPPROVEDATE<'2025-06-01' -order by T2.FENTRYID desc + INNER JOIN T_SAL_RETURNSTOCKENTRY_CE T4 ON T3.FENTRYID = T4.FENTRYID + LEFT JOIN T_HS_CALDIMENSIONS T5 ON T3.FDIMENSIONID = T5.FDIMENSIONID + LEFT JOIN T_BD_EXPENSE_L T6 ON T4.FEXPENSEID = T6.FEXPID AND T6.FLOCALEID = 2052 + LEFT JOIN T_BD_MATERIAL ff ON t2.FMaterialID=ff.FMaterialID + WHERE T1.FAPPROVEDATE>='2025-01-01' AND t1.FAPPROVEDATE<'2025-06-01') a +GROUP BY a.FRETCUSTID,a.FMaterialID,a.FNUMBER,a.FNAME,FAPPROVEDATE2 + +ORDER BY a.FRETCUSTID,FMaterialID,FAPPROVEDATE2 +SELECT * FROM #TuiHuoChengBen + +SELECT * , DATEFROMPARTS((bb.Year), (bb.Month), 1) AS FAPPROVEDATE INTO #TempNianDuXiaoShouYuSuan FROM NianDuXiaoShouYuSuan bb +WHERE bb.Year=2025 + + + + +----Ԥɱ +,( +SELECT SUM(FALLAMOUNT) + FROM VHUB_T_BMGStandCost cost WHERE 1=1 AND cost.FBMMATERIALGROUP AND cost.FDATE='2025-01-01' AND cost.FDATE<'2025-06-01' ) AS F_YSZCB + + ,( +SELECT SUM(FMATERIALCOSTAMOUNT) + FROM VHUB_T_BMGStandCost WHERE 1=1 AND cost.FBMMATERIALGROUP=t5.FNUMBER ) AS F_YSZCB_Z + ,( +SELECT SUM(FLABORCOSTAMOUNT) + FROM VHUB_T_BMGStandCost WHERE 1=1 AND cost.FBMMATERIALGROUP=t5.FNUMBER) AS F_YSCB_G_Z + ,( +SELECT SUM(FFEEAMOUNT) + FROM VHUB_T_BMGStandCost WHERE 1=1 ) AS F_YSCB_F_Z \ No newline at end of file diff --git a/把销售预算的结果行专列的存储过程.sql b/把销售预算的结果行专列的存储过程.sql index 879a5a9..d01d690 100644 --- a/把销售预算的结果行专列的存储过程.sql +++ b/把销售预算的结果行专列的存储过程.sql @@ -6,12 +6,11 @@ END; GO -- µĴ洢 -CREATE PROCEDURE dbo.RP_NianDuXiaoShouYuSuan - @month INT = 1, +CREATE PROCEDURE dbo.RP_NianDuXiaoShouYuSuan @year INT = 2025 AS BEGIN - DECLARE @sql2 NVARCHAR(MAX); + DECLARE @month INT = 1, @sql2 NVARCHAR(MAX); DELETE dbo.NianDuXiaoShouYuSuan WHERE Year = @year; @@ -33,7 +32,11 @@ BEGIN FCUSTOMERID,FBMMATERIALGROUP, FMONTH' + CONVERT(NVARCHAR(10), @month) + N' FROM VHUB_t_Cust100008 T8 LEFT JOIN VHUB_t_Cust_Entry100007 T7 ON t8.FID = t7.FID where T8.FYEARS =' + CONVERT(NVARCHAR(20), @year) + N')'; - --PRINT @sql2; + PRINT @sql2; + EXEC sp_executesql @sql2; SELECT @month = @month + 1; END; + + + END; \ No newline at end of file