使用SELECT语句返回的数据插入新行

时间:2013-04-13 03:39:51

标签: 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 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

但唯一的问题,或者更令人讨厌的是,实际的临时表中很容易有40列。我真的不想声明40多个变量并将其分配给每一列。

有关如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:3)

干什么呢......

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

基本上你可以在TempData中为任意数量的列扩展它,而不必为它声明变量。