DBテーブルのいくつかの行を更新する必要があります。更新する行を特定する方法には、一連の複雑なステートメントが含まれ、それらを一連のWITHステートメントにまとめることができました。これで正しいデータ値が得られたので、テーブルを更新する必要があります。
WITHステートメントでこれらの値を取得できたので、UPDATE/MERGEで使用したいと思っていました。簡単な例は次のとおりです。
with data1
(
ID_1
)
as
(
Select ID
from ID_TABLE
where ID > 10
)
,
cmedb.data2
(
MIN_ORIGINAL_ID
,OTHER_ID
)
as
(
Select min(ORIGINAL_ID)
,OTHER_ID
from OTHER_ID_TABLE
where OTHER_ID in
(
Select distinct ID_1
From data1
)
group by OTHER_ID
)
select MIN_ORIGINAL_ID
,OTHER_ID
from cmedb.data2
これで2列のデータができたので、それらを使用してテーブルを更新します。そのため、下部にselectを表示する代わりに、UPDATE / MERGEの上にWITHステートメントを配置したり、UPDATE / MERGEステートメントの一部として使用したりするなど、マージと更新のあらゆる種類の組み合わせを試しました。以下は、私がやりたいことに最も近いものです。
merge into ID_TABLE as it
using
(
select MIN_ORIGINAL_ID
,OTHER_ID
from cmedb.data2
) AS SEL
ON
(
it.ID = sel.OTHER_ID
)
when matched then
update
set it.ORIGINAL_ID = sel.MIN_ORIGINAL_ID
だからそれは動作しません。UPDATEまたはMERGEと組み合わせてWITHステートメントを使用した例がインターネット上で見つからなかったため、これが可能かどうかはわかりません。INSERTと組み合わせて使用されているWITHステートメントの例があるので、それが可能であると信じています。
誰かが助けてくれるならそれは素晴らしいことです、そして私が問題を解決するのに役立つであろう情報を省略したかどうか私に知らせてください。
免責事項:私が提供した例は、私がやろうとしていることの要約版であり、実際には意味がないかもしれません!