请复制到查询器中运行:create function getSql(@reid int)
returns varchar(8000) as
begin
declare @rsql varchar(8000)
declare @count int
declare @i int
select @count=总重量/每缸重量 from tmp where recordid=@reid
set @rsql='select 色号,名称,总重量,每缸重量,总重量/每缸重量 as 批次,1 as 序号 from tmp where recordid='+ cast(@reid as varchar(4))
set @i=2
while @i<=@count
begin
set @rsql=@rsql+'
union(select 色号,名称,总重量,每缸重量,总重量/每缸重量 as 批次,'+cast(@i as varchar(4))+' as 序号 from tmp where recordid='+ cast(@reid as varchar(4))+') '
set @i=@i+1
end
return @rsql
end
create table tmp(recordid int,色号 int, 名称 varchar(10), 总重量 int, 每缸重量 int)
insert tmp values(11,9876,'羊毛',480, 96)
select * from tmp
declare @sql varchar(8000)select @sql=dbo.getsql(11)
exec (@sql)
drop table tmp
drop function getsql
解决方案 »
- 【交流贴】使用SQL模拟循环链表与堆栈进行括号匹配
- 问个SQL问题
- IP地址排序问题?
- 请教一个显示问题,急。。。。
- 我想請問一下: set nocount on 是什麼意思, 為什麼很多的stored procedures的第一行都有遮一句話??多謝!!!
- alter table TEST alter column aaa varchar(2) bbb varchar(2)
- sql语句询问
- 求救..........................
- 这样的存储过程怎么写???谢谢
- 使用用户输入登录标志号和密码的SQL Server验证,如何创建DSN? SQL Server端如何设置?
- 请教个sql server 2000安装问题!!
- 如何更写一个更新表的SQL语句
你用下面的形式调用:
declare @sql varchar(8000)
select @sql=@sql+dbo.getsql(recordid) from tmp
exec(@sql)
这是只一个思路,关键在于union的控制上。将我的函数修改修改,定能达到你的要求