2015-02-09 68 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