Вы можете присоединить table2
к table1
для каждого столбца (для этого потребуется 3 объединения):
SELECT t1.id,
t2a.description AS code1,
t2b.description AS code2,
t2c.description AS code3
FROM table1 t1
INNER JOIN table2 t2a ON t1.code1 = t2a.code
INNER JOIN table2 t2b ON t1.code2 = t2b.code
INNER JOIN table2 t2c ON t1.code3 = t2c.code
Или вы можете отключить table1
от столбцов к строкам, а затем выполнить одно соединение с table2
и затем переворачиваем таблицу из строк в столбцы:
WITH pivoted_values ( id, name, description ) AS (
SELECT id,
name,
t2.description
FROM (
SELECT *
FROM table1
UNPIVOT ( code FOR name IN ( code1, code2, code3 ) )
) t1
INNER JOIN table2 t2 ON t1.code = t2.code
)
SELECT id,
code1,
code2,
code3
FROM pivoted_values
PIVOT (
MAX( description )
FOR name IN (
'CODE1' AS code1,
'CODE2' AS code2,
'CODE3' AS code3
)
)
Оба они выводят:
ID | CODE1 | CODE2 | CODE3
--: | :----- | :------ | :-------
222 | Good | medium | Average
223 | medium | Poor | Low
224 | Low | Success | Mild
225 | Low | medium | Progress
db <> fiddle здесь