В моей таблице три поля, и я хочу обновить их, трижды соединяясь с другой таблицей.Я знаю, что должен использовать merge into
, но я не смог найти ни одного похожего запроса, который бы использовал merge into
и join
только с одной таблицей несколько раз.
Оператор select
- это нечтокак это:
select * from TABLE t
inner join DESTINATION_TABLE d1
on t.CODE1 = d1.CODE
inner join DESTINATION_TABLE d2
on t.CODE2 = d2.CODE
inner join DESTINATION_TABLE d3
on t.CODE3 = d3.CODE
Теперь, как я могу обновить три поля (FIELD1
, FIELD2
, FIELD3
) из TABLE
, используя поля из d1
, d2
и d3
с использованием merge into
?
РЕДАКТИРОВАНИЕ:
Исходный запрос:
select * from TOTAL
inner join GROUP_LEVEL_DETAIL gl1
on gl1.NAME = substr(GL, 1, instr(GL, ' -', 1))
inner join GROUP_LEVEL_DETAIL gl2
on GL2.NAME = replace(substr(GL, instr(GL, ' -', 1, 1), instr(GL, ' -', 1, 2) - instr(GL, ' -', 1, 1)), ' - ', '')
inner join GROUP_LEVEL_DETAIL gl3
on gl3.NAME = replace(substr(GL, instr(GL, '-', 1, 2), 500), '- ', '')
Пример данных для TOTAL
:
ID GL GL1_CODE GL2_CODE GL3_CODE
----- ----------------------------- ---------- ---------- -----------
1 Sample1 - Sample2 - Sample3 null null null
2 John - Jack - Harry null null null
Пример данных для GROUP_LEVEL_DETAIL
:
CODE NAME LEVEL_NO
--------- ----------- ------------
SMP1 Sample1 1
SMP2 Sample2 2
SMP3 Sample3 3
JCK1 Jack 1
JHN2 John 2
HRY3 Harry 3
И я хочу, чтобы моя таблица TOTAL
стала такой после обновления:
ID GL GL1_CODE GL2_CODE GL3_CODE
----- ----------------------------- ---------- ---------- -----------
1 Sample1 - Sample2 - Sample3 SMP1 SMP2 SMP3
2 John - Jack - Harry JCK1 JHN2 HRY3