SQL Server-列名作为变量

SQL Server-列名作为变量,sql,tsql,insert,sql-server-2012,Sql,Tsql,Insert,Sql Server 2012,我只是想知道这是否可行,我正在尝试更新/插入到列中,但是我希望能够在变量中选择列名并这样做: 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 你为什么要这样做 DECLARE @Col

我只是想知道这是否可行,我正在尝试更新/插入到列中,但是我希望能够在变量中选择列名并这样做:

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

你为什么要这样做

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

set @SQL='
INSERT INTO someothertable
(ID, '+@Col+')
SELECT 
ID, 
SomeData
FROM yetanothertable'
EXEC(@SQL)

你为什么要这样做

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

set @SQL='
INSERT INTO someothertable
(ID, '+@Col+')
SELECT 
ID, 
SomeData
FROM yetanothertable'
EXEC(@SQL)

让整个查询动态化,但你不能这样做。你所能做的就是按照@mmhasannn所说的做,让它成为动态sql。这通常是数据模型有问题的迹象——不应该有多个列包含相同的“类型”数据,因此尝试参数化你正在使用的列(也不应该有多个表包含相同的数据类型)是有意义的我知道数据模型很糟糕,但对此我无能为力:(使整个查询成为动态sql你做不到。你能做的就是按照@mmhasannn所说的,使其成为动态sql。这通常是数据模型有问题的迹象-不应该有多个列包含同一个“类型”对于数据,尝试参数化正在使用的列(或包含相同类型数据的多个表)是有意义的。我知道数据模型很糟糕,但对此我无能为力:(因为我得到了很多非常糟糕的数据,我需要从中报告,我认为这个数据库是由某种傻瓜设计的。因为我得到了很多非常糟糕的数据,我需要从中报告,我认为这个数据库是由某种傻瓜设计的。