SQL Server有没有办法从给定列表中选择列

问题描述:

我有一列动态的列,然后选择列表中列中的列。SQL Server有没有办法从给定列表中选择列

例如

Select (List of columns) 
from tablename 

这里是我的代码

SET NOCOUNT ON; 

DECLARE @table TABLE(cols varchar(50)); 

DECLARE @tablename NVARCHAR(255); 
DECLARE @tableid INT; 
DECLARE @sSQL NVARCHAR(500); 

SET @tableid = (SELECT DISTINCT TABLEID FROM faciltyShowedDetails WHERE layerid = @layerid); 
SET @tablename = (SELECT dbo.FNC_Search_GetSearchTable(@tableid)) 

INSERT INTO @table(cols) 
    SELECT COLUMN_NAME 
    FROM faciltyShowedDetails 
    WHERE layerid = @layerid; 

我想从列的@table列表中选择。

+0

是的,有一种方法,但除非你想要一个抽象的解决方案,请提供你有的实际代码。 – Alex

+0

此列表的列表是什么形式?它是一个CSV列表吗? –

+0

不,我会从表中选择列表 – gray

您将构造查询并使用动态SQL。假设“名单”的确是一个逗号分隔的列表:

declare @sql nvarchar(max); 

set @sql = 'select [cols] from tablename'; 

set @sql = replace(@sql, '[cols]', @cols); 

exec sp_executesql @sql; 

编辑:

从表中获取的列,你可以使用的伎俩:

declare @cols varchar(max); 

select @cols = ', ' + columnname 
from @table t; 

然后你有在前面的代码中删除第一个逗号(使用stuff())。

+0

我声明列表的字符串表我怎么可以使用它作为你的@cols – gray

+0

我已经知道了。感谢您的建议 – gray