使用包含表名的附加列查询表

时间:2017-11-07 15:31:43

标签: sql-server

  • 列表项

我正在寻找一种方法查询来查询表并添加一个包含表名的列,而不是在select语句中显式写入实际的'tablename'。有没有办法做到这一点?

例如我想要; 表名:施工
原始列将是Modif_num,modif_desc。

我想查询这些结果;

原始列将是Modif_num,modif_desc。

MODIF_NUM   TABLE_NAME        MODIF_DESC  
2           Construction      Quality  
2           Construction      Quality  
2           Construction      Quality  
2           Construction      Quality  

常规选择*会产生

MODIF_NUM   MODIF_DESC  
2           Quality  
2           Quality  
2           Quality  
2           Quality  

3 个答案:

答案 0 :(得分:0)

在select语句中,您可以根据字符串返回一列,例如:

SELECT 'Construction' As Table_Name, MODIF_NUM FROM  MyTable

OR

SELECT 'Construction' As Table_Name, * FROM  MyTable

要将它们组合在一起,UNION可以工作:

SELECT 'Construction' As Table_Name,  MODIF_NUM, MODIF_DESC FROM  tblConstruction
UNION ALL
SELECT 'Demolition' As Table_Name,  MODIF_NUM, MODIF_DESC FROM  tblDemolition
UNION ALL
SELECT 'Reconstruction' As Table_Name,  MODIF_NUM, MODIF_DESC FROM  tblReconstruction

这有帮助吗?

答案 1 :(得分:0)

在这种情况下,我会使用excel。

A栏:表名

B栏:="select cast('"&A1&"' as nvarchar(50)) as tablename ,* into TARGETTABLE from "& A1

enter image description here

然后用您的所有表名填充A列..然后将B列复制并粘贴到SSMS

根据您的评论,这是一个一次性的任务。如果它不是一次性任务,则使用相同的逻辑生成一堆字符串并执行它们。

啊等等抱歉你不能反复选择,我在想什么...对不起更像这样:

enter image description here

答案 2 :(得分:0)

尝试此查询:

SELECT TABLE_NAME, a.*
  FROM [Construction] a,
       INFORMATION_SCHEMA.TABLES