2017-07-19 4 views
1

現在、私はある種のデータマッピングに取り組んでいます。テーブルTable1とで挿入時に、挿入されているが結合されたテーブルには出力されない出力列

TemporaryTable

 
RUNID | DocId | Amount 
E  7  50 
C  6  12 

表1

 
T1ID | DocID | Amount 
1  5  10 
2  6  20 
3  6  50 

表2

 
T2ID | RUNID | T1Id 
1  B  1 
2  C  2 
3  D  3 

:私は、次の3つのテーブルを持っているとしましょう0の列T1IDおよびT2IDは、自動的に移入されるID列です。 私が今やりたいことはTable1TemporaryTableから値を挿入し、TemporaryTableから列RunIDに値を保存することで、新たに発生したT1ID

Table2への結果のテーブルには、次のようになります。

表1を

 
T1ID | DocID | Amount 
1  5  10 
2  6  20 
3  6  50 
4  7  50 
5  6  12 

表2

 
T2ID | RUNID | T1Id 
1  B  1 
2  C  2 
3  D  3 
4  E  4 
5  C  5 

私はoutputステートメントの助けを借りてそれをしたいと思います。このようなもの:

CREATE TABLE #map(T1ID, RUNID) 
INSERT INTO Table1(DocId, Amount) 
OUTPUT inserted.T1ID, t.RunId INTO #map 
SELECT t.DocId, t.Amount 
FROM TemporaryTable t 

出力文でt.RunIdにアクセスできないため、これは明らかに機能しません。これはどうすればできますか?

+0

で利用可能なすべての列を使用して挿入をシミュレートするために、いくつかの常に偽条件でMERGEコマンドを使用することができます質問(回答あり):https://stackoverflow.com/questions/41184310/insert-into-merge-select-sql-server/41184461#41184461 もう1つはhttps://stackoverflow.com/questions/です。 38213008/t-sql-insert-data-into-parent-and-child-tables –

答えて

4

あなたは、私は、これは重複としてクローズする必要があるかどうかわからないんだけど、ここ2、非常に関連しているOUTPUT

MERGE Table1 t1 
USING TemporaryTable t 
    ON 1=2 
WHEN NOT MATCHED THEN 
    INSERT (DocId, Amount) 
    VALUES (t.DocId, t.Amount) 
    OUTPUT inserted.T1ID, t.RunId 
    INTO #map ; 
+0

ご協力ありがとうございます!最後にMERGEの本当のメリット! –

関連する問題