我正在寻找一种方法查询来查询表并添加一个包含表名的列,而不是在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
答案 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
然后用您的所有表名填充A列..然后将B列复制并粘贴到SSMS
中根据您的评论,这是一个一次性的任务。如果它不是一次性任务,则使用相同的逻辑生成一堆字符串并执行它们。
啊等等抱歉你不能反复选择,我在想什么...对不起更像这样:
答案 2 :(得分:0)
尝试此查询:
SELECT TABLE_NAME, a.*
FROM [Construction] a,
INFORMATION_SCHEMA.TABLES