問題
表1:
| KeyColumn | DataColumn1 | DataColumn2|
01 0.1 0.2
02 0.13 0.41
表 2:
| anotherKey | DataColumn1 | DataColumn2|
A1 .15 1.2
A2 .25 23.1
表 3:
|KeyColumn| anotherKey |
01 A1
02 A1
キー (A1 または A2) を指定すると、テーブル 1 の DataColumn1 列と DataColumn2 列をテーブル 2 の対応する値で更新する必要があります。
したがって、上記のデータに示すように、table1 は x 行を更新できます。A1 を更新する場合は、01 行と 02 行の両方を更新する必要があります
(したがって、table1 の値は、キー 01 と 02 の両方で、datacolumn1 では 0.15、datacolumn2 では 1.2 になります)
私がこれまでに試したこと:
MERGE table1
USING (SELECT *
FROM table2
LEFT OUTER JOIN table3
on table2.anotherKey = table3.anotherKey
WHERE table2.anotherKey = 'A1') tmpTable
ON
table1.keyColumn = tmpTable.keyColumn
WHEN MATCHED THEN
UPDATE
SET table1.DataColumn1 = tmpTable.DataColumn1
,table1.DataColumn2 = tmpTable.DataColumn2;
質問:
- これは許されますか?using ステートメントで選択を使用するには? 1 行目で構文エラーが発生します
- これについてもっと良い方法はありますか?これを必要以上に複雑にしていますか?
- 私は何を間違っていますか?
そしてエラー:
メッセージ 102、レベル 15、状態 1、行 1 'a' 付近の構文が正しくありません。メッセージ 102、レベル 15、状態 1、行 12 'd' 付近の構文が正しくありません。