基于声明列的表进行SELECT

时间:2017-01-06 15:20:10

标签: sql-server sql-server-2012

我尝试运行多个SELECT命令,这些命令从不同的数据库中选择相同的列集,并且希望只需将列列为一个变量,然后为SELECT调用该列。

它目前是如何完成的,但列数和列数要少得多;选择:

SELECT Column1
      ,Column2
      ,Column3
FROM [db1]

--Processes

SELECT Column1
      ,Column2
      ,Column3
FROM [db2]

--Processes

SELECT Column1
      ,Column2
      ,Column3
FROM [db3]

--Processes

我希望能够开展工作的想法:

DECLARE @ListofColumns VARCHAR;
SET @ListofColumns = 'Column1,Column2,Column3';

SELECT @ListofColumns
FROM [db1]

--Processes

SELECT @ListofColumns
FROM [db2]

--Processes

SELECT @ListofColumns
FROM [db3]

--Processes

1 个答案:

答案 0 :(得分:1)

你需要在这里使用动态sql ......

DECLARE @ListofColumns VARCHAR(1000)  --<-- Define length here 
       ,@SQL NVarchar(MAX);

SET @ListofColumns = 'Column1,Column2,Column3';

SET @SQL = N'SELECT ' + @ListofColumns +  N' FROM [db1]'

exec sp_executesql @SQL