2015-02-09 70 views
0

我只是想知道這是否可能,我試圖更新/插入到列但我想能夠選擇列名到變量中,並像這樣:SQL Server - 列名作爲變量

DECLARE @Col 
SET @Col = (SELECT TOP 1 somecolumnname FROM mytable) 

INSERT INTO someothertable 
(ID, @Col) --This is the part I'm querying 
SELECT 
ID, 
SomeData 
FROM yetanothertable 
+4

使整個查詢動態sql – 2015-02-09 13:04:04

+0

你不能那樣做。你可以做什麼@mmhasannn說,使所有動態SQL。 – 2015-02-09 13:04:49

+2

這通常表示數據模型有問題 - 不應該有多個包含相同「數據類型」的列,因此嘗試參數化您正在使用的列是有意義的(也不會有多個表包含相同類型的數據) – 2015-02-09 13:07:57

回答

3
DECLARE @Col as Varchar(100) 
SET @Col = (SELECT TOP 1 somecolumnname FROM mytable) 

DECLARE @SQL AS VARCHAR(500) 
SET @SQL = 'INSERT INTO someothertable' 
SET @SQL = @SQL + '(ID,' + @Col + ')' 
SET @SQL= @SQL + ' SELECT ID, SomeData FROM yetanothertable' 

EXEC(@SQL) 
2

你爲什麼要這麼做?

DECLARE @Col varchar(100), @SQL varchar(1000) 
SET @Col = (SELECT TOP 1 somecolumnname FROM mytable) 

set @SQL=' 
INSERT INTO someothertable 
(ID, '[email protected]+') 
SELECT 
ID, 
SomeData 
FROM yetanothertable' 
EXEC(@SQL) 
+0

因爲我收到很多很多可怕的數據,我需要報告,我認爲這個數據庫是由某種機智設計。 – 2015-02-09 13:12:25