您好我有一个临时表(#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
我得到以下内容:列名或提供的值数与表定义不匹配。
答案 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列是唯一的。如果该表中有重复值,则查询似乎运行正常,但最终会随机更改结果。
有关如何在UPDATE
或DELETE
中合并两个表的详细信息,请查看我的A Join A Day - UPDATE & DELETE帖子。