DECLARE @period int DECLARE @dbName varchar(100) DECLARE @ACCTGORGID int SET @ACCTGORGID = 100039 SET @period = 201801 SELECT @dbName = DB_NAME() IF @dbName != 'AIS20231110222743' BEGIN SET @period = 202406 SET @ACCTGORGID = 1 END ;WITH #初始数据 AS ( SELECT t0.FPRODUCTNO ,t0.FPRODUCTID ,t0.FBILLID ,t0.FBILLENTRYID ,t0.FFORMID ,t0.FPRODUCTDIMEID ,(t2.FYEAR * 100 + t2.FPERIOD) AS 'FPERIOD' FROM T_CB_PROORDERDIME t0 INNER JOIN V_CB_PROORDERINFO t1 on t0.FPRODUCTDIMEID = t1.FPRODUCTDIMEID INNER JOIN V_HS_OUTACCTG t2 on t2.FID = t1.FACCTGID WHERE 1=1 AND (t2.FYEAR * 100 + t2.FPERIOD) = @period AND t2.FACCTGORGID = @ACCTGORGID AND t2.FCOMPUTEID != '' AND t0.FFORMID = 'PRD_MO' AND t1.FENDINITKEY = 1 --期末标识 ) , #成本数据 AS ( SELECT t0.FPRODUCTNO,t0.FPRODUCTID,t0.FPRODUCTDIMEID,t0.FBILLID,t0.FBILLENTRYID ,t1.FCOSTITEMID ,(CASE WHEN t1.FEXPENSESITEMID = 4655037 AND t1.FCOSTITEMID = 20523 THEN 4655093 ELSE t1.FEXPENSESITEMID END) AS 'FEXPENSESITEMID' ,t1.FEXPTYPE ,t1.FQUALIFIEDINAMOUNT ,t1.FCURRINPUTAMOUNT FROM #初始数据 t0 CROSS APPLY ( SELECT t1.FID ,t1.FPRODUCTDIMEID ,t3d.FCOSTITEMID ,t3d.FEXPENSESITEMID ,t3.FEXPTYPE ,SUM(t3d.FQUALIFIEDINAMOUNT) 'FQUALIFIEDINAMOUNT' ,SUM(t3d.FCURRINPUTAMOUNT) 'FCURRINPUTAMOUNT' FROM V_CB_PROORDERINFO t1 INNER JOIN V_HS_OUTACCTG t2 on t1.FACCTGID = t2.FID AND (t2.FYEAR * 100 + t2.FPERIOD) <= t0.FPERIOD 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 t1.FPRODUCTDIMEID = t0.FPRODUCTDIMEID AND t1.FENDINITKEY = 1 GROUP BY t1.FPRODUCTDIMEID ,t3d.FCOSTITEMID ,t3d.FEXPENSESITEMID ,t3.FEXPTYPE ) t1 ) , #成本转换 AS ( SELECT t1.FPRODUCTNO,t1.FPRODUCTID,t1.FPRODUCTDIMEID,t1.FBILLID,t1.FBILLENTRYID ,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,t1.O16 FROM ( SELECT t0.FPRODUCTNO,t0.FPRODUCTID,t0.FPRODUCTDIMEID,t0.FBILLID,t0.FBILLENTRYID ,t0.FQUALIFIEDINAMOUNT,t1.fieldName FROM #成本数据 t0 LEFT JOIN V_BD_COST_RESTORE_EXPENSE t1 on t0.FEXPENSESITEMID = t1.FEXPID WHERE NOT (t0.FCOSTITEMID = 20522 AND t0.FEXPENSESITEMID = 20045) )t0 PIVOT ( SUM(t0.FQUALIFIEDINAMOUNT) FOR t0.fieldName IN (O1,O2,O3,O4,O5,O6,O7,O8,O9,O10,O11,O12,O13,O14,O15,O16) ) AS t1 ) SELECT t0.* ,ISNULL(t1.O1,0) AS 'O1' ,ISNULL(t1.O2,0) AS 'O2' ,ISNULL(t1.O3,0) AS 'O3' ,ISNULL(t1.O4,0) AS 'O4' ,ISNULL(t1.O5,0) AS 'O5' ,ISNULL(t1.O6,0) AS 'O6' ,ISNULL(t1.O7,0) AS 'O7' ,ISNULL(t1.O8,0) AS 'O8' ,ISNULL(t1.O9,0) AS 'O9' ,ISNULL(t1.O10,0) AS 'O10' ,ISNULL(t1.O11,0) AS 'O11' ,ISNULL(t1.O12,0) AS 'O12' ,ISNULL(t1.O13,0) AS 'O13' ,ISNULL(t1.O14,0) AS 'O14' ,ISNULL(t1.O15,0) AS 'O15' ,ISNULL(t1.O16,0) AS 'O16' ,ISNULL(t1.O2,0) + ISNULL(t1.O3,0) + ISNULL(t1.O4,0) + ISNULL(t1.O5,0) + ISNULL(t1.O6,0) + ISNULL(t1.O7,0) + ISNULL(t1.O8,0) + ISNULL(t1.O9,0) + ISNULL(t1.O10,0) + ISNULL(t1.O11,0) + ISNULL(t1.O12,0) + ISNULL(t1.O13,0) + ISNULL(t1.O14,0) + ISNULL(t1.O15,0) + ISNULL(t1.O16,0) AS 'O' ,ISNULL(t1.O1,0) + ISNULL(t1.O2,0) + ISNULL(t1.O3,0) + ISNULL(t1.O4,0) + ISNULL(t1.O5,0) + ISNULL(t1.O6,0) + ISNULL(t1.O7,0) + ISNULL(t1.O8,0) + ISNULL(t1.O9,0) + ISNULL(t1.O10,0) + ISNULL(t1.O11,0) + ISNULL(t1.O12,0) + ISNULL(t1.O13,0) + ISNULL(t1.O14,0) + ISNULL(t1.O15,0) + ISNULL(t1.O16,0) AS 'R' ,0 P ,t2.FNUMBER ,t2_l.FNAME ,t2_l.FDESCRIPTION FROM #初始数据 t0 LEFT JOIN #成本转换 t1 on t0.FBILLID = t1.FBILLID AND t0.FBILLENTRYID = t1.FBILLENTRYID INNER JOIN T_BD_MATERIAL t2 on t0.FPRODUCTID = t2.FMATERIALID INNER JOIN T_BD_MATERIAL_L t2_l on t2_l.FMATERIALID = t0.FPRODUCTID AND t2_l.FLOCALEID = 2052