Я попытаюсь объяснить на примере.
У меня есть 2 таблицы:
table1
column1 column2 column3
000001 ABC COD1
000001 ABC COD2
000002 BCD COD3
000003 EDF COD1
000003 EDF COD3
000004 FGH COD1
000004 FGH COD2
000004 FGH COD3
000004 FGH COD4
table2
column3
COD1
COD2
COD3
COD4
COD5
COD6
COD7
table2 содержит только весь возможный код column3 table1 (и только это). table1 содержит мои реальные данные. Мне не нужны table2 COD5 COD6 и COD7
Мне нужно получить такой результат
000001 ABC COD1
000001 ABC COD2
null null COD3
null null COD4
null null COD1
null null COD2
000002 BCD COD3
null null COD4
000003 EDF COD1
null null COD2
000003 EDF COD3
null null COD4
000004 FGH COD1
000004 FGH COD2
000004 FGH COD3
000004 FGH COD4
Мне нужно сделать это с помощью oracle SQL, но я не уверен, возможно ли это. Я могу согласиться с тем, что первый столбец всегда является моим текущим столбцом 1 (даже если столбец 2 имеет значение NULL), если необходимо. Я не хочу дублировать, например, два 000004 FGH COD4, но я хочу дублировать, если ноль.
Я пробовал все, что знаю ... но лучшее, что я смог сделать, - это объединение с минусом или правое соединение в подзапросе, где мне нужно указать условие column1.
ИЗМЕНИТЬ, это правильный ответ, найденный другом, когда я пытался
select * from
(select distinct a.col1, a.col2
from table1 a
right join (select col3 from table2 f
where f.col3 IN ('COD1','COD3','COD6')) b
on a.col3 = b.col3),
(select col3 from table2 f
where f.col3 IN ('COD1','COD3','COD6'));