我现在有若干个表,表的个数不确定,她们的结构相同,
想把他们结合到一个表中,其中fun是自定义函数,它的返回值是和参数相关的表,如果是2个表我可以用
select a.* from(from * from fun(5) union all select * from fun(8))a来实现,可是现在的情况是我根本不清楚有多少个这样的表,外界程序中会通过条件筛选得到一个 5 8 10 12 等一组数据,接着把它们放入fun的参数中,想通过类似的union all方法得到最后的结果
不知道怎么做了。
想把他们结合到一个表中,其中fun是自定义函数,它的返回值是和参数相关的表,如果是2个表我可以用
select a.* from(from * from fun(5) union all select * from fun(8))a来实现,可是现在的情况是我根本不清楚有多少个这样的表,外界程序中会通过条件筛选得到一个 5 8 10 12 等一组数据,接着把它们放入fun的参数中,想通过类似的union all方法得到最后的结果
不知道怎么做了。
解决方案 »
- 关于嵌套变量的求教!
- 怎样从两个相同的表(在同一台机子SQLSEVER里的两个服务器)里复制?
- 请各位高手帮忙,看看这段程序哪个地方错误?拜托!
- 如何在一个表内求和?(详情见内)在线等!!!!!!
- 求两个表连接查询的sql
- 连接数据库的问题
- 谁能告诉我什么叫第三范式的传递依赖?
- 在MS SQL Server中所有的字段类型都是varchar,请问这样的语句SQL语句出了什么问题?“Select * From Tablename Where
- SQL SERVER的sql.log怎么备份???????
- 100分 CodePage问题?
- sql查询,急急急!
- 查询字符中是否包含字符串中的某值 ,号分隔
declare @s varchar(1000)
declare @a table(ID int)
select @m='5,8,10,12',@s='select a.* from('
set @m='select '+replace(@m,',',' union select ')
insert @a exec(@m)
select @s=@s+'select * from fun('+ltrim(id)+') union all ' from @a
set @s=left(@s,len(@s)-10)+')t'
exec(@s)
RETURNS VARCHAR(MAX)
BEGIN
DECLARE @tableLoopId INT
DECLARE @sql VARCHAR(MAX)
SET @tableLoopId = 1
SET @sql = ''
WHILE(@tableLoopId <= @tableCount)
BEGIN
SET @sql += 'SELECT * '+
'FROM '+ @tableCommonName + LTRIM(RTRIM(STR(@tableLoopId) ))
IF (@tableLoopId < @tableCount)
BEGIN
SET @sql += ' UNION ALL '
END
SET @tableLoopId += 1
END
RETURN @sql
END