Sql server SQL Server是否有方法从给定列表中选择列

Sql server SQL Server是否有方法从给定列表中选择列,sql-server,dynamic-sql,Sql Server,Dynamic Sql,我有一个动态列列表,然后在表中选择列表中的列 比如说 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 DISTINC

我有一个动态列列表,然后在表中选择列表中的列

比如说

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

中的列列表中选择您将构造查询并使用动态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()
)。

是的,有一种方法,但除非您需要抽象解决方案,否则请提供您拥有的实际代码。此列列表的形式是什么?这是CSV列表吗?不,我将从表格中选择列表您仍然没有费心澄清您之前的问题。这是一种问题垃圾邮件方案吗?上一个问题:我刚才删除了我的问题。这是一种不同的方法,但仍然是相同的问题我将列表声明为一个字符串表如何将其用作@cols