VapeEZDLL/7.销售预算成本与实际成本分析报表SQL.sql
2025-06-04 14:19:14 +08:00

143 lines
9.5 KiB
SQL

---最终表
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 [],t2.FMATERIALID,
t4.FNAME AS [],
t5.FNUMBER AS [],
T1.FCUSTOMERID,t1.FDOCUMENTSTATUS
, 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 [()-]
FROM
T_SAL_OUTSTOCK T1
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
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
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-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
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_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