IF EXISTS (SELECT 1 WHERE object_id('tempdb..#生产订单') IS NOT NULL) BEGIN DROP TABLE #生产订单 END IF EXISTS (SELECT 1 WHERE object_id('tempdb..#关联项目费用临时表') IS NOT NULL) BEGIN DROP TABLE [dbo].[#关联项目费用临时表] END CREATE TABLE #生产订单( [FBILLNO] [nvarchar](80) NULL, [FID] [int] NOT NULL, [FENTRYID] [int] NOT NULL, [TopMaterialId] [int] NULL, [FMATERIALID] [int] NULL, [FFORMID] [varchar](36) NULL, [入库数量] [decimal](23, 10) NOT NULL, [FSTATUS] [char](1) NULL, [FCOSTDATE] [datetime] NULL, [FQTY] [decimal](23, 10) NOT NULL, [FPERIOD] [int] NULL ) ON [PRIMARY] declare @sqlL varchar(max) declare @billNo varchar(100),@materialNumber varchar(100) declare @dbName varchar(100) SET @sqlL = N' INSERT INTO #生产订单 SELECT t0.FBILLNO,t0.FID,t0e.FENTRYID,t0e.FMATERIALID AS TopMaterialId,t0e.FMATERIALID ,t0.FFORMID AS FFORMID,t0e_a.FSTOCKINQUASELAUXQTY AS 入库数量 ,t0e_a.FSTATUS,t0e_a.FCOSTDATE,t0e_a.FSTOCKINQUASELAUXQTY AS FQTY ,CONVERT(INT, CONVERT(VARCHAR(6),ISNULL(t0e_a.FCOSTDATE,GETDATE()),112)) AS FPERIOD FROM T_PRD_MO t0 INNER JOIN T_PRD_MOENTRY t0e on t0.FID = t0e.FID INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e.FENTRYID = t0e_a.FENTRYID INNER JOIN T_BD_MATERIAL t1 on t1.FMATERIALID = t0e.FMATERIALID WHERE 1 = 1 ' select @dbName = db_name() if @dbName != 'AIS20231110222743' BEGIN SET @billNo = 'WO2403210039' --SET @billNo = 'WO2310240111' --SET @billNo = 'TO2310120003' SET @billNo = 'RO2403280019' SET @billNo = 'WO2304230023' END IF @billNo != '' OR @materialNumber = '' BEGIN SET @sqlL = @sqlL + N' AND t0.FBILLNO = ''' + @billNo + '''' END IF @materialNumber != '' BEGIN SET @sqlL = @sqlL + N' AND t1.FNUMBER = ''' + @materialNumber + '''' END EXEC(@sqlL) ;WITH #生产领料单 AS ( SELECT t1e.FMOENTRYID,t1e.FMOBILLNO,t1e.FMATERIALID,t1e.FLOT,t1e.FLOT_TEXT --,SUM(t1e.FAMOUNT) AS 'FAMOUNT' --,SUM(t1e.FACTUALQTY) AS 'FQTY' ,t1e.FAMOUNT,t1e.FACTUALQTY,t1e.FPRICE ,'领料' AS 'FFORMID' FROM T_PRD_PICKMTRL t1 INNER JOIN T_PRD_PICKMTRLDATA t1e on t1.FID = t1e.FID WHERE t1.FDOCUMENTSTATUS = 'C' AND t1e.FMOBILLNO != t1e.FLOT_TEXT --GROUP BY t1e.FLOT,t1e.FLOT_TEXT,t1e.FMATERIALID,t1e.FMOENTRYID,t1e.FMOBILLNO ) , #生产补料单 AS ( SELECT t0e.FMOENTRYID,t0e.FMOBILLNO,t0e.FMATERIALID,t0e.FLOT,t0e.FLOT_TEXT --,SUM(t0e.FAMOUNT) AS 'FAMOUNT' --,SUM(t0e_q.FACTUALQTY) AS 'FQTY' ,t0e.FAMOUNT,t0e_q.FACTUALQTY,t0e.FPRICE ,'补料' AS 'FFORMID' FROM T_PRD_FEEDMTRL t0 INNER JOIN T_PRD_FEEDMTRLDATA t0e on t0.FID = t0e.FID INNER JOIN T_PRD_FEEDMTRLDATA_Q t0e_q on t0e_q.FENTRYID = t0e.FENTRYID WHERE t0.FDOCUMENTSTATUS = 'C' --GROUP BY t0e.FMOID,t0e.FMOENTRYID,t0e.FMATERIALID,t0e.FLOT,t0e.FLOT_TEXT,t0e.FMOBILLNO ) , #生产退料单 AS ( SELECT t0e.FMOENTRYID,t0e.FMOBILLNO,t0e.FMATERIALID,t0e.FLOT,t0e.FLOT_TEXT --,-SUM(t0e.FAMOUNT) AS 'FAMOUNT' --,-SUM(t0e.FQTY) AS 'FQTY' ,-t0e.FAMOUNT AS 'FAMOUNT',-t0e.FQTY AS 'FQTY',-t0e.FPRICE AS 'FPRICE' ,'退料' AS 'FFORMID' FROM T_PRD_RETURNMTRL t0 INNER JOIN T_PRD_RETURNMTRLENTRY t0e on t0.FID = t0e.FID WHERE t0.FDOCUMENTSTATUS = 'C' --GROUP BY t0e.FMOID,t0e.FMOENTRYID,t0e.FMATERIALID,t0e.FLOT,t0e.FLOT_TEXT,t0e.FMOBILLNO ) , #生产补料单 AS ( SELECT t0e.FMOENTRYID,t0e.FMATERIALID,t0e.FLOT,SUM(t0e.FAMOUNT) AS 'FAMOUNT','PRD_MO' AS 'FFORMID' ,SUM(t0e_q.FACTUALQTY) AS 'FQTY' FROM T_PRD_FEEDMTRL t0 INNER JOIN T_PRD_FEEDMTRLDATA t0e on t0.FID = t0e.FID INNER JOIN T_PRD_FEEDMTRLDATA_Q t0e_q on t0e_q.FENTRYID = t0e.FENTRYID WHERE t0.FDOCUMENTSTATUS = 'C' GROUP BY t0e.FMOID,t0e.FMOENTRYID,t0e.FMATERIALID,t0e.FLOT ) , #生产退料单 AS ( SELECT t0e.FMOENTRYID,t0e.FMATERIALID,t0e.FLOT,SUM(t0e.FAMOUNT) AS 'FAMOUNT','PRD_MO' AS 'FFORMID' ,SUM(t0e.FQTY) AS 'FQTY' FROM T_PRD_RETURNMTRL t0 INNER JOIN T_PRD_RETURNMTRLENTRY t0e on t0.FID = t0e.FID WHERE t0.FDOCUMENTSTATUS = 'C' GROUP BY t0e.FMOID,t0e.FMOENTRYID,t0e.FMATERIALID,t0e.FLOT ) , #委外补料单 AS ( SELECT t0e.FSUBREQENTRYID AS FMOENTRYID,t0e.FMATERIALID,t0e.FLOT,SUM(t0e.FAMOUNT) AS 'FAMOUNT','SUB_SUBREQORDER' AS 'FFORMID' ,SUM(t0e_q.FACTUALQTY) AS 'FQTY' FROM T_SUB_FEEDMTRL t0 INNER JOIN T_SUB_FEEDMTRLENTRY t0e on t0.FID = t0e.FID INNER JOIN T_SUB_FEEDMTRLENTRY_Q t0e_q on t0e_q.FENTRYID = t0e.FENTRYID WHERE t0.FDOCUMENTSTATUS = 'C' GROUP BY t0e.FLOT,t0e.FMATERIALID,t0e.FSUBREQENTRYID ) , #委外退料单 AS ( SELECT t0e_a.FSUBREQENTRYID AS FMOENTRYID,t0e.FMATERIALID,t0e.FLOT,SUM(t0e.FAMOUNT) AS 'FAMOUNT','SUB_SUBREQORDER' AS 'FFORMID' ,SUM(t0e.FQTY) AS 'FQTY' FROM T_SUB_RETURNMTRL t0 INNER JOIN T_SUB_RETURNMTRLENTRY t0e on t0.FID = t0e.FID INNER JOIN T_SUB_RETURNMTRLENTRY_A t0e_a on t0e.FENTRYID = t0e_a.FENTRYID WHERE t0.FDOCUMENTSTATUS = 'C' GROUP BY t0e.FLOT,t0e.FMATERIALID,t0e_a.FSUBREQENTRYID ) , #直接材料 AS ( SELECT * FROM #生产领料单 UNION ALL SELECT * FROM #生产补料单 UNION ALL SELECT * FROM #生产退料单 ) , #整合数据 AS ( SELECT * FROM #生产订单 UNION ALL SELECT * FROM #整合数据 ) SELECT FAMOUNT,FACTUALQTY,FPRICE FROM #直接材料 t0 WHERE t0.FMOBILLNO = 'WO2304230023'