CREATE PROCEDURE Aipetech_sp_PoOrderExeStatus @InterID int AS -- 创建一个临时表,用来生成"未完采购订单的执行情况" Create Table #Aipetech_T002 ( 采购订单内码 int , 分录号 int , 物料内码 int , 物料编码 varchar ( 80 ), 物料名称 varchar ( 80 ), 收货日期 datetime , 入库单号 varchar ( 80 ), 单位 varchar ( 30 ), 数量 decimal ( 13 ), 入库数量 decimal ( 13 ) default 0 , 未完成数量 decimal ( 13 ) default 0 , 交货日期 datetime , 备注 varchar ( 255 ) ) insert into #Aipetech_T002 (采购订单内码,分录号,物料内码,物料编码,物料名称,单位,数量,交货日期,备注) select 采购订单内码,分录号,物料内码,物料编码,物料名称,单位,数量,交货日期,备注 from Aipetech_v_PoOrderEntry where 采购订单内码 = @InterID -- select * from #Aipetech_T002 Create Table #Aipetech_T003 ( 采购订单内码 int , 物料内码 int , 入库数量 int ) insert into #Aipetech_T003 (采购订单内码,物料内码,入库数量) select 采购订单内码,物料内码, sum (辅助实收数量) as 辅助实收数量 from aipetech_v_icstockbill where ((采购订单内码 = @InterID ) and (入库单号 LIKE ' win% ' )) group by 物料内码,采购订单内码 -- select * from #Aipetech_T003 -- 计算入库数量 update #Aipetech_T002 set 入库数量 = A003.入库数量 from #aipetech_t003 a003,#aipetech_t002 a002 where a002.物料内码 = a003.物料内码 -- 计算未完成数量 update #Aipetech_T002 set 未完成数量 = 数量 - 入库数量 insert into #Aipetech_T002 (物料名称,入库数量,未完成数量) select ' 合计: ' , sum (入库数量), sum (未完成数量) from #Aipetech_t002 -- select 采购订单内码,分录号,物料内码,物料编码,物料名称,入库单号,收货日期,单位,数量,入库数量,未完成数量,交货日期,备注 from #Aipetech_t002 a002 -- union -- select 采购订单内码,1,物料内码,null,null,入库单号,单据日期,null,null,辅助实收数量,null,null,null from aipetech_v_icstockbill avi where ((采购订单内码=@InterID) and(入库单号 LIKE 'win%')) -- order by 分录号 -- 以下用游标来进行主细表的记录增加到#Aipetech_T004表中 Create Table #Aipetech_T004 ( 采购订单内码 int , 分录号 int , 物料内码 int , 物料编码 varchar ( 80 ), 物料名称 varchar ( 80 ), 收货日期 datetime , 入库单号 varchar ( 80 ), 单位 varchar ( 30 ), 数量 decimal ( 13 ), 入库数量 decimal ( 13 ) default 0 , 未完成数量 decimal ( 13 ) default 0 , 交货日期 datetime , 备注 varchar ( 255 ) ) declare @T1 int , @T2 int , @T3 int , @T4 varchar ( 80 ), @T5 varchar ( 80 ), @T6 datetime , @T7 varchar ( 80 ), @T8 varchar ( 30 ), @T9 decimal ( 13 ), @T10 decimal ( 13 ), @T11 decimal ( 13 ), @T12 datetime , @T13 varchar ( 255 ) declare A_T004_cur scroll cursor for select * from #Aipetech_T002 open A_T004_cur Fetch first from A_T004_cur into @T1 , @T2 , @T3 , @T4 , @T5 , @T6 , @T7 , @T8 , @T9 , @T10 , @T11 , @T12 , @T13 while @@fetch_status = 0 begin insert into #Aipetech_T004 values ( @T1 , @T2 , @T3 , @T4 , @T5 , @T6 , @T7 , @T8 , @T9 , @T10 , @T11 , @T12 , @T13 ) insert into #Aipetech_T004 select 采购订单内码, @T2 ,物料内码,物料代码,物料名称,单据日期,入库单号, @T8 , null ,辅助实收数量, null , null , null from aipetech_v_icstockbill avi where ((采购订单内码 = @InterID ) and (入库单号 LIKE ' win% ' ) and (物料内码 = @T3 )) Fetch next from A_T004_cur into @T1 , @T2 , @T3 , @T4 , @T5 , @T6 , @T7 , @T8 , @T9 , @T10 , @T11 , @T12 , @T13 end close A_T004_cur deallocate A_T004_cur -- select * from #aipetech_t002 select * from #Aipetech_T004 -- select 采购订单内码,1,物料内码,null,null,入库单号,单据日期,null,null,辅助实收数量,null,null,null from aipetech_v_icstockbill avi where ((采购订单内码=@InterID) and(入库单号 LIKE 'win%')) Drop Table #Aipetech_T002 Drop Table #Aipetech_T003 Drop Table #Aipetech_T004 GO