Sql 我是否可以合并所有表(700+)并使用表名添加新列?

Sql 我是否可以合并所有表(700+)并使用表名添加新列?,sql,sql-server,Sql,Sql Server,我用它来帮助我生成代码来联合数据库中的所有700个表。它工作得很好 select 'select PartNumber, Quantity FROM '+TABLE_NAME +' union all' FROM INFORMATION_SCHEMA.TABLES 但是,我想添加第三列,将其添加到相关行旁边的表名中。有没有一种方法可以使用表名称来实现这一点。也就是说,我不必为每个表手动添加表名 只需将tablename作为列添加到中: select 'select PartNumber, Q

我用它来帮助我生成代码来联合数据库中的所有700个表。它工作得很好

select 'select PartNumber, Quantity FROM '+TABLE_NAME +' union all'
FROM  INFORMATION_SCHEMA.TABLES

但是,我想添加第三列,将其添加到相关行旁边的表名中。有没有一种方法可以使用表名称来实现这一点。也就是说,我不必为每个表手动添加表名

只需将tablename作为列添加到中:

select 'select PartNumber, Quantity, '''+TABLE_NAME +''' as table_name from ' + TABLE_NAME + ' union all' 
from INFORMATION_SCHEMA.TABLES;

如果您的表可能有奇怪的字符,您可能需要考虑到这一点。不幸的是,QUOTENAME并不能满足您的需要。但是replacetable_name将用双引号替换单引号。

只需将tablename作为列添加到中:

select 'select PartNumber, Quantity, '''+TABLE_NAME +''' as table_name from ' + TABLE_NAME + ' union all' 
from INFORMATION_SCHEMA.TABLES;

如果您的表可能有奇怪的字符,您可能需要考虑到这一点。不幸的是,QUOTENAME并不能满足您的需要。但是replacetable_name将用双引号替换单引号。

您需要动态SQL来实现这一点。这是否缺少动态SQL中的一个?在我的例子中会是什么样子?很抱歉,在引用之前的单词quantity后面应该有一个from。您需要动态SQL来实现这一点。是否缺少from?动态SQL?在我的例子中会是什么样子呢?很抱歉,在报价之前的单词quantity后面应该有一个from。我不想手动添加700多个表名。有没有办法解决这个问题,或者我误解了你的建议。Gordon-我对你的代码做了一个调整,并让它工作,选择“选择零件号,数量”,“表名+”作为表名,从“+表名+”中选择“union all”,从信息\u SCHEMA.TABLES@巴里马克。FROM子句是非常有用的,它确实是。感谢您的指导,我不想手动添加700多个表名。有没有办法解决这个问题,或者我误解了你的建议。Gordon-我对你的代码做了一个调整,并让它工作,选择“选择零件号,数量”,“表名+”作为表名,从“+表名+”中选择“union all”,从信息\u SCHEMA.TABLES@巴里马克。FROM子句是非常有用的,它确实是。谢谢你的指导