DECLARE @period int DECLARE @dbName varchar(100) DECLARE @ACCTGORGID int DECLARE @billNo varchar(100) SET @ACCTGORGID = 100039 SET @period = 201801 SET @billNo = 'MO000019' SELECT @dbName = DB_NAME() IF @dbName != 'AIS20231110222743' BEGIN SET @period = 202305 SET @ACCTGORGID = 1 SET @billNo = 'WO2403210039' SET @billNo = 'WO2403210048' SET @billNo = 'WO2304230023' --SET @billNo = 'WO2405290121' --SET @billNo = 'WO2406220013' --SET @billNo = 'TO2302060061' END ;WITH #初始数据 AS ( SELECT t0.FPRODUCTNO ,t0.FBILLID ,t0.FBILLENTRYID ,t0.FPRODUCTID ,t0.FFORMID ,t1.FPRODUCTDIMEID ,t3.FMATERIALID ,t3.FQUALIFIEDINQTY ,t3d.FCOSTITEMID ,t3d.FEXPENSESITEMID ,t3.FEXPTYPE ,t3d.FQUALIFIEDINAMOUNT ,t3.FCURRINPUTAMOUNT ,(t2.FYEAR * 100 + t2.FPERIOD) AS 'FPERIOD' FROM T_CB_PROORDERDIME t0 INNER JOIN V_CB_PROORDERINFO t1 on t1.FPRODUCTDIMEID = t0.FPRODUCTDIMEID INNER JOIN V_HS_OUTACCTG t2 on t1.FACCTGID = t2.FID INNER JOIN V_CB_COSTMATTERIAL t3 on t3.FID = t1.FID INNER JOIN V_CB_COSTMATTERIALDETAIL t3d on t3d.FENTRYID = t3.FENTRYID WHERE 1 = 1 AND t0.FPRODUCTNO = @billNo AND t2.FACCTGORGID = @ACCTGORGID AND t2.FCOMPUTEID != '' --AND (t2.FYEAR * 100 + t2.FPERIOD) <= @period AND t1.FENDINITKEY = 1 ) , #成本转换 AS ( SELECT t1.FPRODUCTNO,t1.FPRODUCTID,t1.FPRODUCTDIMEID,t1.FBILLID,t1.FBILLENTRYID,t1.FMATERIALID,t1.FEXPTYPE ,t1.FCURRINPUTAMOUNT,t1.FQUALIFIEDINQTY,t1.FPERIOD ,t1.O0,t1.O1,t1.O2,t1.O3,t1.O4,t1.O5,t1.O6,t1.O7,t1.O8,t1.O9,t1.O10,t1.O11,t1.O12,t1.O13,t1.O14,t1.O15 FROM ( SELECT t0.FPRODUCTNO,t0.FPRODUCTID,t0.FPRODUCTDIMEID,t0.FBILLID,t0.FBILLENTRYID,t0.FEXPTYPE ,t0.FMATERIALID,t0.FQUALIFIEDINAMOUNT,t0.FCURRINPUTAMOUNT,t0.FQUALIFIEDINQTY,t0.FPERIOD ,t1.fieldName FROM #初始数据 t0 LEFT JOIN V_BD_COST_RESTORE_EXPENSE_V2 t1 on t0.FEXPENSESITEMID = t1.FEXPID ) t0 PIVOT ( SUM(t0.FQUALIFIEDINAMOUNT) FOR t0.fieldName IN (O0,O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15) ) AS t1 ) , #物料属性 AS ( SELECT t0e.FENUMID,t0e.FSEQ,t0e.FVALUE,t0e_l.FCAPTION FROM T_META_FORMENUMITEM t0e INNER JOIN T_META_FORMENUMITEM_L t0e_l on t0e.FENUMID = t0e_l.FENUMID AND t0e_l.FLOCALEID = 2052 WHERE 1 = 1 AND t0e.FID = 'ac14913e-bd72-416d-a50b-2c7432bbff63' ) SELECT t0.FPRODUCTNO,t0.FPRODUCTID,t0.FPRODUCTDIMEID ,t0.FMATERIALID,t0.FEXPTYPE,t0.FBILLID,t0.FBILLENTRYID ,t3_l.FNAME,t3.FNUMBER ,ISNULL(t2_l.FNAME,'') AS '物料名称',ISNULL(t2.FNUMBER,'') AS '物料编码' ,ISNULL(t2w.FCAPTION,'') AS '物料属性',ISNULL(t2b.FERPCLSID,'') AS '物料属性值' ,t0.FMATERIALID '物料内码' ,ISNULL(t4.FAMOUNT, 0) '领料成本',ISNULL(t4.FQTY,0) AS '领料数量',ISNULL(t4.FLOT,0) AS 'FLOT',ISNULL(t5.FNUMBER,'') AS 'FLOT_TEXT' ,ISNULL(t4.FPERIOD,'') AS 'FPERIOD' ,t0.累计投入成本 ,t0.累计完工数量 ,t0.材料成本Q + t0.制造费用O + t0.直接人工S AS '料工费R' ,t0.费用类别,t0.直接人工S,t0.材料成本Q,t0.原材料Q1,t0.间接材料Q2,t0.制造费用O ,t0.制造费用_职工薪酬,t0.制造费用_股份支付,t0.制造费用_劳动保护费,t0.制造费用_差旅费,t0.制造费用_业务招待费,t0.制造费用_办公费,t0.制造费用_折旧与摊销,t0.制造费用_租赁费,t0.制造费用_水电费,t0.制造费用_物料消耗,t0.制造费用_加工_修理_检测费,t0.制造费用_车辆使用费,t0.制造费用_其他,t0.制造费用_委外加工费 FROM ( SELECT t0.FPRODUCTNO,t0.FPRODUCTID,t0.FPRODUCTDIMEID,t0.FMATERIALID,t0.FEXPTYPE,t0.FBILLID,t0.FBILLENTRYID ,CASE t0.FEXPTYPE WHEN 0 THEN '直接费用' WHEN 1 THEN '间接费用' WHEN 2 THEN '其他费用' ELSE '其他' END '费用类别' ,SUM(t0.FCURRINPUTAMOUNT) AS '累计投入成本' ,SUM(t0.FQUALIFIEDINQTY) AS '累计完工数量' ,MAX(t0.FPERIOD) AS 'FPERIOD' ,SUM(ISNULL(t0.O0,0)) AS '直接人工S' ,SUM(ISNULL(t0.O1,0)) AS '材料成本Q' --,CASE t0.FEXPTYPE WHEN 0 THEN SUM(ISNULL(t0.O1,0)) ELSE 0 END AS '原材料Q1' --,CASE WHEN t0.FEXPTYPE != 0 THEN SUM(ISNULL(t0.O1,0)) ELSE 0 END AS '间接材料Q2' ,SUM(CASE t0.FEXPTYPE WHEN 0 THEN ISNULL(t0.O1,0) ELSE 0 END) AS '原材料Q1' ,SUM(CASE WHEN t0.FEXPTYPE != 0 THEN ISNULL(t0.O1,0) ELSE 0 END) AS '间接材料Q2' ,SUM(ISNULL(t0.O2,0) + ISNULL(t0.O3,0)+ISNULL(t0.O4,0)+ISNULL(t0.O5,0)+ISNULL(t0.O6,0)+ISNULL(t0.O7,0)+ISNULL(t0.O8,0)+ISNULL(t0.O9,0)+ISNULL(t0.O10,0)+ISNULL(t0.O11,0)+ISNULL(t0.O12,0)+ISNULL(t0.O13,0)+ISNULL(t0.O14,0)+ISNULL(t0.O15,0)) AS '制造费用O' ,SUM(ISNULL(t0.O2,0)) AS '制造费用_职工薪酬' ,SUM(ISNULL(t0.O3,0)) AS '制造费用_股份支付' ,SUM(ISNULL(t0.O4,0)) AS '制造费用_劳动保护费' ,SUM(ISNULL(t0.O5,0)) AS '制造费用_差旅费' ,SUM(ISNULL(t0.O6,0)) AS '制造费用_业务招待费' ,SUM(ISNULL(t0.O7,0)) AS '制造费用_办公费' ,SUM(ISNULL(t0.O8,0)) AS '制造费用_折旧与摊销' ,SUM(ISNULL(t0.O9,0)) AS '制造费用_租赁费' ,SUM(ISNULL(t0.O10,0)) AS '制造费用_水电费' ,SUM(ISNULL(t0.O11,0)) AS '制造费用_物料消耗' ,SUM(ISNULL(t0.O12,0)) AS '制造费用_加工_修理_检测费' ,SUM(ISNULL(t0.O13,0)) AS '制造费用_车辆使用费' ,SUM(ISNULL(t0.O14,0)) AS '制造费用_其他' ,SUM(ISNULL(t0.O15,0)) AS '制造费用_委外加工费' FROM #成本转换 t0 GROUP BY t0.FPRODUCTNO,t0.FPRODUCTID,t0.FPRODUCTDIMEID,t0.FMATERIALID,t0.FEXPTYPE,t0.FBILLID,t0.FBILLENTRYID ) t0 LEFT JOIN T_BD_MATERIAL t2 on t0.FMATERIALID = t2.FMATERIALID LEFT JOIN T_BD_MATERIAL_L t2_l on t2_l.FMATERIALID = t0.FMATERIALID AND t2_l.FLOCALEID = 2052 LEFT JOIN T_BD_MATERIALBASE t2b on t2b.FMATERIALID = t0.FMATERIALID LEFT JOIN #物料属性 t2w on t2w.FVALUE = t2b.FERPCLSID INNER JOIN T_BD_MATERIAL t3 on t0.FPRODUCTID = t3.FMATERIALID INNER JOIN T_BD_MATERIAL_L t3_l on t3_l.FMATERIALID = t0.FPRODUCTID AND t3_l.FLOCALEID = 2052 OUTER APPLY ( SELECT t5.FLOT ,CONVERT(int,CONVERT(varchar(6) ,t6.FBILLDATE,112)) AS 'FPERIOD' ,SUM(t4.FAMOUNT) AS 'FAMOUNT',SUM(t6.FQTY) AS 'FQTY' FROM V_CB_COSTALLORESULTSEND t4 INNER JOIN T_HS_INIVSTOCKDIMENSION t5 on t5.FENTRYID = t4.FDIMEENTRYID AND t5.FLOT != 0 INNER JOIN V_HS_OUTINSTOCKSEQ t6 on t6.FENTRYID = t4.FOUTINSTOCKID WHERE t4.FPRODUCTDIMEID = t0.FPRODUCTDIMEID AND t5.FMATERIALID = t0.FMATERIALID AND CONVERT(int,CONVERT(varchar(6) ,t6.FBILLDATE,112)) <= t0.FPERIOD GROUP BY t5.FLOT ,CONVERT(int,CONVERT(varchar(6) ,t6.FBILLDATE,112)) ) t4 LEFT JOIN T_BD_LOTMASTER t5 on t5.FLOTID = t4.FLOT ORDER BY t0.FPRODUCTDIMEID ,t0.FEXPTYPE DESC ,t0.FMATERIALID ASC ,t4.FLOT ASC