t sql select into existing table new column

时间:2013-05-08 09:04:18

标签: tsql

您好我有一个临时表(#temptable1),我想从另一个临时表(#temptable2)中添加一列,我的查询如下:

select 
Customer
,CustName
,KeyAccountGroups
,sum(Weeksales) as Weeksales
into #temptable1
group by Customer
,CustName
,KeyAccountGroups


select
SUM(QtyInvoiced) as MonthTot
,Customer
into #temptalbe2
from SalesSum
where InvoiceDate between @dtMonthStart and @dtMonthEnd
group by Customer


INSERT INTO #temptable1
SELECT MonthTot FROM #temptable2
where #temptable1.Customer = #temptable2.Customer

我得到以下内容:列名或提供的值数与表定义不匹配。

2 个答案:

答案 0 :(得分:0)

如果我理解正确你想要做两件事。 1:更改表#temptable1并添加新列。 2:使用#temptable2

的值填充该列
ALTER #temptable1 ADD COLUMN MothTot DATETIME

UPDATE #temptable1 SET MothTot = (
    SELECT MonthTot 
    FROM #temptable2
    WHERE #temptable2.Customer = #temptable1.Customer)

答案 1 :(得分:0)

INSERT语句中,您无法引用要插入的表。插入在假设要创建新行的情况下工作。这意味着没有可以引用的现有行。

您要查找的功能由UPDATE声明提供:

UPDATE t1
SET MonthTot = t2.MonthTot 
FROM #temptable1 t1
JOIN #temptable2 t2
ON t1.Customer = t2.Customer;

请注意,此逻辑要求t2中的Customer列是唯一的。如果该表中有重复值,则查询似乎运行正常,但最终会随机更改结果。

有关如何在UPDATEDELETE中合并两个表的详细信息,请查看我的A Join A Day - UPDATE & DELETE帖子。