看着头晕晕.不过.如果数据量不大的话,通过建多个临时表,处理中间数据, 然后再通过中间数据得到要返回的结果集.这样每步都很清晰,也不难吧.
需要循环的话.下面是大致处理模式declare @i int
declare @Count int
set @count = count(1) from 你要处理的原始表及其连接
set @i =1 WHile (@i<=@count)
Begin
在这里处理数据将结果放到中间表中
set @i=@i+1
End最后在这里 通过union 或 join 等方式 取得最后的结果集.能用临时表的话,就能把数据分级处理,这样很方便.
需要循环的话.下面是大致处理模式declare @i int
declare @Count int
set @count = count(1) from 你要处理的原始表及其连接
set @i =1 WHile (@i<=@count)
Begin
在这里处理数据将结果放到中间表中
set @i=@i+1
End最后在这里 通过union 或 join 等方式 取得最后的结果集.能用临时表的话,就能把数据分级处理,这样很方便.
解决方案 »
- 求一条统计sql语句
- 为何我在删除SQL SERVER2000时总是删不掉```因为当想重新安装时总是说``以前安装过```我重启也没有用````
- 这里的朋友,请帮帮忙,关于(会计期)应付帐款计算的问题,偶不会.
- 使用web服务发布向导中有一项选择输出位置,请问谁知道这个怎么填写?
- 求助:Sql2005中用PIVOT查询出现Null怎么办
- 高手请进!!!
- 这个SQL 语句怎么写?好像SQL 只有CASE分支
- SQL Server 2005 使用本机 XML Web 服务,支持用户定义的表值函数吗?
- 把图片保存到数据库中的问题
- 菜鸟求助!SQL Server 单相同步!
- 如何将远程服务器的数据库备份到本地机器上?
- 数据库复制的老问题,到底怎么搞??
set @count = count(1) from 你要处理的原始表及其连接
是我开始临表里的半成品数吗?好像还是有点不对啊,你说的中间表是不是同时也有半成品和原料的啊?那我不是还要再在这张中间表中查找啊?
谢谢各位,再帮我看看
解决马上结帖
---------------------------------------------------------
create procedure sp_getqty(@invtid varchar(20)) --成品ID
as
begin
declare @i int
set @i = 1
select
b.invtid,b.qtyreq,b.bomid,@i as level
into #t
from
AMBomItem a,
AMBommatl b
where
a.bomid = b.bomid
while @@rowcount<>0
begin
set @i = @i + 1
insert into #t
select
b.invtid,a.qtyreq*c.qtyreq/b.qtyreq,b.bomid,@i
from
#t a,
AMBomItem b,
AMBommatl c
where
a.invtid = b.invtid
and
b.bomid = c.bomid
delete #t where level = @i-1 and exists(select 1 from AMBomItem where invtid = #t.invtid)
end
select invtid,qtyreq=sum(qtyreq),bomid from #t group by invtid,bomid
end
go
---------------------------------------------------------
create procedure sp_getqty(@invtid varchar(20)) --成品ID
as
begin
declare @i int
set @i = 1
select
b.invtid,b.qtyreq,b.bomid,@i as level
into #t
from
AMBomItem a,
AMBommatl b
where
a.bomid = b.bomid
while @@rowcount<>0
begin
set @i = @i + 1
insert into #t
select
b.invtid,a.qtyreq*c.qtyreq/b.qtyreq,b.bomid,@i
from
#t a,
AMBomItem b,
AMBommatl c
where
a.invtid = b.invtid
and
b.bomid = c.bomid
delete #t where level = @i-1 and exists(select 1 from AMBomItem where invtid = #t.invtid)
end
select invtid,qtyreq=sum(qtyreq),bomid from #t group by invtid,bomid
end
go