DB 테이블의 일부 행을 업데이트해야합니다. 업데이트 할 행을 식별하는 방법은 일련의 복잡한 명령문과 관련되어 있으며 일련의 WITH 문을 사용하여이를 해결할 수있었습니다. 이제 올바른 데이터 값을 가지고 테이블을 업데이트해야합니다.DB2 WITH 문을 UPDATE 또는 MERGE의 일부로 사용할 수 있습니까?
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
이제 두 개의 데이터 열이 있으므로 테이블을 업데이트하는 데 사용하고 싶습니다. 따라서 선택 항목이 맨 아래에있는 대신 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
그래서 작동하지 않습니다. 나는 UPEATE 또는 MERGE와 함께 WITH 문을 사용하여 인터넷에서 예제를 찾지 못했기 때문에 이것이 가능한지 확신 할 수 없습니다. INSERT와 함께 사용되는 WITH 문에 대한 예가 있으므로 가능할 수도 있습니다.
도움이 될만한 사람이 있으면 도움이 될 것입니다. 문제를 해결하는 데 유용한 정보를 빠뜨린 경우 알려 주시기 바랍니다.
면책 조항 : 내가 제공 한 예는 제가하려고하는 것에 대한 차가운 버전이며 실제 의미가 없습니다.
우수. 이것이 제가 끝내 준 것입니다. 동료가 실제로 이렇게하는 것이 좋습니다. 나는 그를 무시했습니다 ... – Clarkey