求助邹建!!!
老七 2006-02-21 10:20:02 CREATE TABLE BOM单(产品 varchar(10),材料 varchar(10),消耗 decimal(28,6))
declare @i int
declare @J int
set @J = 0
set @i = 0
while @I < 4
begin
while @j < 26
begin
insert bom单 select char(65+@i)+char(65+@j),N'a',2
insert bom单 select char(65+@i)+char(65+@j),N'b',2
insert bom单 select char(65+@i)+char(65+@j),N'c',2
insert bom单 select char(65+@i)+char(65+@j),N'd',2
insert bom单 select char(65+@i)+char(65+@j),N'e',2
insert bom单 select char(65+@i)+char(65+@j),N'f',2
insert bom单 select char(65+@i)+char(65+@j),N'g',2
insert bom单 select char(65+@i)+char(65+@j),N'h',2
insert bom单 select char(65+@i)+char(65+@j),N'i',2
insert bom单 select char(65+@i)+char(65+@j),N'j',2
set @j = @J + 1
end
set @i = @i + 1
set @J = 0
end
go
CREATE TABLE 产品生产计划( 产品 varchar(10),产量 decimal(28,6))
declare @ii int
declare @jj int
set @jj = 0
set @ii = 0
while @ii < 3
begin
while @jj < 26
begin
insert 产品生产计划 select char(65+@ii)+char(65+@jj),5
set @jj = @jj + 1
end
set @ii = @ii + 1
set @jj = 0
end
go
CREATE TABLE 产品生产物料采购计划( 产品 varchar(10),产量 decimal(28,6),材料 varchar(60),规格 varchar(60),单位 varchar(4),消耗 decimal(28,6),计划消耗 decimal(28,6))
DECLARE @p产品 varchar(10)
DECLARE @p产量 decimal(28,6)
DECLARE cp_Cursor CURSOR FOR
select 产品,产量 from 产品生产计划
OPEN cp_Cursor
FETCH NEXT FROM cp_Cursor into @p产品,@p产量
WHILE @@FETCH_STATUS = 0
BEGIN
Insert Into 产品生产物料采购计划(产品,产量,材料,消耗,计划消耗) select @p产品,@p产量,bo.材料,bo.消耗,bo.消耗*@p产量 from bom单 bo where bo.产品=@p产品
FETCH NEXT FROM cp_Cursor into @p产品,@p产量
END
CLOSE cp_Cursor
DEALLOCATE cp_Cursor
declare @sqlhead varchar(8000)
declare @sqlend varchar(8000)
declare @sql1 varchar(8000)
declare @sql2 varchar(8000)
declare @sql3 varchar(8000)
declare @sql4 varchar(8000)
declare @i int
declare @ic varchar(20)
--生成数据处理临时表
select id=identity(int,0,1),gid=0 ,a=',['+产品 +']=sum(case 产品 when ''' +产品+''' then 计划消耗 else 0 end)'
into # from(select distinct 产品 from 产品生产物料采购计划) a order by 产品
select @i=max(len(a)) from #
print @i
set @i=7800/@i
update # set gid=id/@i
select @i=max(gid) from #
--生成数据处理语句
select @sqlhead='''select 材料,规格,单位,sum(计划消耗) as 计划消耗合计'''
select @sqlend=''' from 产品生产物料采购计划 group by 材料,规格,单位'''
select @sql1=''
select @sql2='select '
select @sql3=''
select @sql4=''
print @i
while @i>=0
select @ic=cast(@i as varchar),@i=@i-1
select @sql1='@'+@ic+' varchar(8000),'+@sql1
select @sql2=@sql2+'@'+@ic+'='''','
select @sql3='select @'+@ic+'=@'+@ic+'+a from # where gid='+@ic+char(13)+@sql3
select @sql4=@sql4+',@'+@ic
select @sql1='declare '+left(@sql1,len(@sql1)-1)+char(13)
select @sql2=left(@sql2,len(@sql2)-1)+char(13)
select @sql3=left(@sql3,len(@sql3)-1)
select @sql4=substring(@sql4,2,8000)
--执行
exec( @sql1+@sql2+@sql3+'
exec('+@sqlhead+'+'+@sql4+'+'+@sqlend+')'
)
--删除临时表
drop table #
--*/
drop TABLE BOM单
drop TABLE 产品生产计划
drop TABLE 产品生产物料采购计划
没办法,一知半解,以上为参考网上相关资料后根据需求写出,程序不能过关,再一次求救。
需要在运行结果的基础上,第二行显示生产计划数。