sql - 如何在联合查询中显示表名

标签 sql sql-server union

以下脚本运行良好:

DECLARE  @SelectClause  VARCHAR(100)    = 'SELECT id_contato'
        ,@Query         VARCHAR(8000)   = '' 

SELECT @Query = @Query + @SelectClause + ' FROM ' + TABLE_NAME + ' UNION ALL '
FROM INFORMATION_SCHEMA.TABLES
WHERE (TABLE_NAME LIKE '%zumbi' or TABLE_NAME like '%engajado%')
SELECT @Query = LEFT(@Query, LEN(@Query) - LEN(' UNION ALL '))
EXEC (@Query)

但我需要带有表名称的第二列来标识信息的来源。

我怎样才能做到这一点?

最佳答案

您正在利用查询中已有的 table_name 字段,只需将其添加到 SELECT 中并正确引用它,以便它以字符串文字形式返回:

DECLARE  @SelectClause  VARCHAR(100)    = 'SELECT id_contato'
        ,@Query         VARCHAR(8000)   = '' 

SELECT @Query = @Query + @SelectClause + ','''+Table_Name+''' AS Table_Name FROM ' + TABLE_NAME + ' UNION ALL '
FROM INFORMATION_SCHEMA.TABLES
WHERE (TABLE_NAME LIKE '%zumbi' or TABLE_NAME like '%engajado%')
SELECT @Query = LEFT(@Query, LEN(@Query) - LEN(' UNION ALL '))
EXEC (@Query)

更新了报价,在 SQL Server 中适用于我。

关于sql - 如何在联合查询中显示表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35860168/

相关文章:

SQL 查询 : Order by in UNION

php - 我如何获得下一个公开号码?

php - 计数 SQL 语法 COUNT(value) 多列

mysql - 错误的查询得到正确的结果

sql - 如何在 SQL Server 中使用以下方法对数据进行 GROUP BY?缺口和岛屿

SQL 服务器 : select same column 3 times into 1 column without UNION ALL

mysql - 使用 MySQL 进行 RIGHT JOIN 或 UNION

mysql - 存储由 0 和 1 组成的长数字的最佳数据类型

sql-server - 如果在运行前未清除项目,将引发Grails 2.3.4 SQL异常

sql-server - 卸载过期评估版后安装 SQL Server 2012 Developer