Sql server 2008 r2 使用SELECT语句返回的数据插入新行

Sql server 2008 r2 使用SELECT语句返回的数据插入新行,sql-server-2008-r2,insert-into,Sql Server 2008 R2,Insert Into,我看过类似的帖子,但没有找到我的确切问题和答案。我要做的是用变量中的数据和select语句中的数据更新表 例如: --THESE ARE THE VARIABLES I WANT TO USE IN INSERT DECLARE @Key uniqueidentifier DECLARE @Name varchar(200) SET @Key = NEWID() SET @Name = 'TestName' --THIS IS A TEMP TABLE THAT I WANT TO SEL

我看过类似的帖子,但没有找到我的确切问题和答案。我要做的是用变量中的数据和select语句中的数据更新表

例如:

--THESE ARE THE VARIABLES I WANT TO USE IN INSERT

DECLARE @Key uniqueidentifier
DECLARE @Name varchar(200)

SET @Key = NEWID()
SET @Name = 'TestName'

--THIS IS A TEMP TABLE THAT I WANT TO SELECT FROM AND USE THE DATA FROM THERE AND    INSERT
SELECT * FROM #TempData AS td

--THE INSERT STATEMENT
INSERT INTO MyTable(CustomerKey, Name, City, State)
VALUES(@Key, @Name, td.City, td.State)
现在对于
SELECT
语句,我将使用变量作为列名,如:

SELECT @City = City, @State = State FROM #TempData
但唯一的问题,或者说更令人恼火的是,实际的temp表中很容易有40列。我真的不想声明40多个变量并将其分配给每一列


有没有想过如何做到这一点?

简单地做一下怎么样

INSERT INTO MyTable(CustomerKey, Name, City, State)
SELECT @Key, @Name, City, State FROM #TempData
WHERE ....

基本上,您可以对TempData中任意数量的列进行扩展,而不必为其声明变量。

简单地做一下怎么样

INSERT INTO MyTable(CustomerKey, Name, City, State)
SELECT @Key, @Name, City, State FROM #TempData
WHERE ....

基本上,您可以将其扩展到TempData中任意数量的列,而不必为其声明变量。

Scott感谢您抽出时间回复,并对响应延迟表示歉意。最后我做了一些和你贴的很相似的事情。再次感谢您的回答。Scott感谢您抽出时间回复,并对延迟回复表示歉意。最后我做了一些和你贴的很相似的事情。再次感谢你的回答。