Использование Oracle. У меня есть таблица, которая выглядит следующим образом:
COLUMN1 COLUMN2
1 A1 B1
2 A2 B2
3 B3
4 A3
5 B4
6 B5
7 A4 B6
Я использую COLUMN1 в качестве первичного ключа для сопоставления с другой таблицей. Однако некоторые строки для COLUMN1 пусты, и в этих случаях мне рекомендуется использовать значения COLUMN2 в качестве первичных ключей (например, строки 5 и 6).
1) Можно ли написать условный INNER ПРИСОЕДИНИТЬСЯ к заявлению с CASE? Что-то вроде
CASE WHEN
COLUMN1 IS NULL
THEN INNER JOIN ...... ON column1 = ....
ELSE
INNER JOIN ...... ON column2 = ....
END (???)
2) Другой вариант, который мне предложили мои друзья, - это создать новый столбец со значениями строки, в основном из COLUMN1 и, во вторую очередь, из COLUMN2, если COLUMN1 пуст для этой строки. Как бы я сделал это с NVL и CASE? Желаемый результат будет следующим, и NEW_COLUMN будет моим основным ключом для сопоставления:
NEW_COLUMN
1 A1
2 A2
3 B3
4 A3
5 B4
6 B5
7 A4