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
列表中选择。
答
您将构造查询并使用动态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()
)。
是的,有一种方法,但除非你想要一个抽象的解决方案,请提供你有的实际代码。 – Alex
此列表的列表是什么形式?它是一个CSV列表吗? –
不,我会从表中选择列表 – gray