2017-07-31 93 views
1

我有一列動態的列,然後選擇列表中列中的列。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

回答

2

您將構造查詢並使用動態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

相關問題