有没有一种方法可以基于表模式的查询创建多个表的SQL视图



我有一个SQL数据库,其中有多个由其他人维护的表,我想将这些表连接起来创建一个视图。问题是表的数量不断扩大!列和字符长度相同。

我可以使用创建一个表列表

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'Table%'.

目前我有一个像下面一样的联合所有查询

SELECT * FROM table1
UNION ALL
SELECT * FROM table2;

但排行榜一直在增长。有什么我可以创建的东西来循环思考表格吗?类似的东西

*SELECT * FROM (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'Table%') UNION ALL*

我知道这行不通,但我希望有某种技巧可以一直走下去!如果有帮助的话,这是在SQL Server 2012上。

感谢

declare @s nvarchar(max);
set @s=''
select 
@s=@s +'(select * from [' + s.name + '])'+
case when ROW_NUMBER() over (order by s.name) != count(*) over () 
then 
' UNION ALL ' 
else 
''
end
from
sys.tables as s
where s.name like 't%'
print @s;

还有一点需要考虑,你需要确保字段计数在手之前是相同的。为了安全起见,最好避免选择*并使用你需要的字段名称。这应该会生成SQL语句,以便在存储过程中运行,如注释中所述。花一些时间捕捉错误,并对字段名称的连续性进行必要的检查。

最新更新