2つのテーブルがあります。最初のテーブルのレコードに基づいて2番目のテーブルを挿入または更新し、INVE_KEY
,EVEN_KEY
(両方の組み合わせが一意である必要があります)を挿入または更新する必要があります。最初のテーブルの行に基づいて、2番目のテーブルの行を挿入または更新します。
最初の表= @
第テーブルTBL1 = @
例1 TBL2:
2番目の表はalredy INVE_KEY = 1、EVEN_KEY = 2、及び第一テーブルが INVE_KEYを有している場合= 1、EVEN_KEY = 2、この行は2番目のテーブル(列 QUA)でのみ更新されます。
例2:
第二テーブルはINVE_KEY = 3、EVEN_KEY = 1を持っていない場合、この行は 最初のテーブルから2番目のテーブルに挿入されます。
私の問題は、テーブルからテーブルへの挿入方法と、それぞれのレコードが2番目のテーブルに存在するかどうかを確認することができないことです。
最初の表:
+----------+----------+-----+
| INVE_KEY | EVEN_KEY | QUA |
+----------+----------+-----+
| 1 | 1 | 3 |
| 2 | 1 | 4 |
| 3 | 1 | 5 |
| 4 | 1 | 6 |
+----------+----------+-----+
二番目の表:
+----------+----------+-----+
| INVE_KEY | EVEN_KEY | QUA |
+----------+----------+-----+
| 3 | 1 | 0 |
| 4 | 1 | 0 |
+----------+----------+-----+
第二のテーブルを更新し、期待される結果後:両方のテーブルの
+----------+----------+-----+
| INVE_KEY | EVEN_KEY | QUA |
+----------+----------+-----+
| 1 | 1 | 3 |(inserted)
| 2 | 1 | 4 |(inserted)
| 3 | 1 | 5 |(updated QUA)
| 4 | 1 | 6 |(updated QUA)
+----------+----------+-----+
作成とデータ:
declare @tbl1 table
(
INVE_KEY INT,
EVEN_KEY INT,
QUA INT
)
declare @tbl2 table
(
INVE_KEY INT,
EVEN_KEY INT,
QUA INT
)
insert into @tbl1(inve_Key, even_Key, qua)
values(1, 1, 3),(2,1,4),(3,1,5),(4,1,6)
insert into @tbl2(inve_Key, even_Key, qua)
values(3,1,0),(4,1,0)
は2文でそれを行う試してみてください。まず、既存のレコードを更新します(UPDATE FROM構文についてはGoogleに問い合わせてください)。 2番目 - >不足しているレコードを挿入 –
最初に2番目のテーブルを切り捨て、最初のテーブルの期待される結果をテーブル全体に取り込むのはなぜでしょうか? –
MERGEを見ましたか? https://docs.microsoft.com/en-us/sql/t-sql/statements/merge-transact-sql –