0

こんにちは、一時テーブル (#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

次のように表示されます: 列名または指定された値の数がテーブル定義と一致しません。

4

2 に答える 2

0

ステートメントでは、INSERT挿入先のテーブルを参照できません。挿入は、新しい行が作成されることを前提として機能します。これは、参照できる既存の行がないことを意味します。

探している機能は、UPDATEステートメントによって提供されます。

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

ただし、このロジックでは、t2 の Customer 列が一意である必要があることに注意してください。そのテーブルに重複する値がある場合、クエリは正常に実行されているように見えますが、結果がランダムに変化することになります。

UPDATE2つのテーブルを結合する方法の詳細については、DELETEの A Join A Day - UPDATE & DELETEの投稿をご覧ください。

于 2013-05-08T09:20:27.693 に答える
0

私がそれを正しく理解しているなら、あなたは2つのことをしたいと思っています。1: テーブル #temptable1 を変更し、新しい列を追加します。2: その列に #temptable2 の値を入力します。

ALTER #temptable1 ADD COLUMN MothTot DATETIME

UPDATE #temptable1 SET MothTot = (
    SELECT MonthTot 
    FROM #temptable2
    WHERE #temptable2.Customer = #temptable1.Customer)
于 2013-05-08T09:07:19.313 に答える