例: ON、WHEN MATCHED、WHEN NOT MATCHED句内のソースまたはターゲットの参照 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/vjt1596846980081.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage

次の例は、ON、WHEN MATCHED、またはWHEN NOT MATCHED句でソース テーブルとターゲット テーブル以外のテーブルを参照しているので、失敗します。

次の例は、テーブルt4は、派生ソース テーブルsでもターゲット テーブルt1でもないので、失敗します。

     MERGE INTO t1
       USING (SELECT x2,y2, z3
              FROM t2, t3
              WHERE y2=10) AS s
       ON x1=y2 AND t4.x4=z2
     WHEN MATCHED THEN
       UPDATE SET z1=10
     WHEN NOT MATCHED THEN
       SELECT (y2, z2, x2);

次の例は、テーブルt3は、派生ソース テーブルsでもターゲット テーブルt1でもないので、失敗します。USINGのソース テーブル サブクエリーにt3が指定されていますが、ON句ではソース テーブルとターゲット テーブルだけを参照できるという制限に違反しています。

     MERGE INTO t1
       USING (SELECT x2,y2, z3
              FROM t2, t3
              WHERE y2=10) AS s
       ON x1=y2 AND t3.x4=z2
     WHEN MATCHED THEN
       UPDATE SET z1=10
     WHEN NOT MATCHED THEN
       INSERT (y2, z2, x2);