Использование NVL для нескольких столбцов-Oracle SQL
Доброе утро, мои любимые мастера sql и волшебники,
Я хочу заменить на 3 столбца данных в 3 таблицах. В настоящее время я использую функцию NVL, однако она ограничена двумя столбцами.
ниже пример:
SELECT ccc.case_id,
NVL (ccvl.descr, ccc.char)) char_val
FROM case_char ccc, char_value ccvl, lookup_value lval1
WHERE
ccvl.descr(+) = ccc.value
AND ccc.value = lval1.descr (+)
AND ccc.case_id IN ('123'))
case_char table
case_id|char |value
123 |email| work_email
124 |issue| tim_
char_value table
char | descr
work_email | complaint mail
tim_ | timeliness
lookup_value table
descr | descrlong
work_email| xxx@blah.com
по существу, то, что я пытаюсь сделать, это если существует соответствие для case_char.значение значению искомое_значение.descr затем отобразит его, если нет, то если существует совпадение с case_char.значение и char_value.пеструшка тогда покажите его.
Я просто пытаюсь вернуть описание для ' issue 'из таблицы char_value, но для' email 'я хочу вернуть descrlong из таблицы lookup_value (все под тем же псевдонимом'char_val').
Итак, мой вопрос в том, как мне добиться этого, имея в виду, что я хочу, чтобы они появлялись под одним и тем же псевдонимом.
Дайте мне знать, если вам потребуется дополнительная информация.
Спасибо, ребята!--2-->
2 ответов
вы можете вложить NVL:
NVL(a, NVL(b, NVL(c, d))
но еще лучше, используйте SQL-standard объединиться, который принимает несколько аргументов, а также работает на системах, отличных от Oracle:
COALESCE(a, b, c, d)