2016-04-03 5 views
0

Я хочу, чтобы иметь возможность получить результаты, которые Если есть комиссия производит его Если нет комиссии она производит manager_id Если нет manager_id или комиссии производит -1Как исправить этот сценарий

Я думаю, что мне, возможно, придется делать NLV2(NVL2(NVL2))), но я не уверен. Это код, который я произвел, я уверен, что я ошибаюсь.

SELECT first, 
     last_name, 
     CASE commission_pct 
      WHEN commission_pct IS NOT NULL THEN commision_pct 
      WHEN commission_pct IS NULL THEN manager_id 
      WHEN commission_pct AND manager_id IS NULL THEN -1 
     END AS "Which Function???" 
FROM employees 
+0

Что невменяемым логика приложение использует для определения, если исследование «COMMISSION_PCT» является менеджер ID, или процент комиссии? Мой совет здесь - вернуть * оба *. –

+0

@ Mo920192: Да, этот запрос неверен. Вы возвращаете 'manager_id' всякий раз, когда' Commission_pct' равно null, независимо от того, является ли 'manager_id 'нулевым или нет. Это должно быть «... КОГДА Commission_pct ИМЕЕТ NULL И manager_id НЕ НУЛЛ, а затем менеджер_ID ELSE -1 END». –

ответ

3

Вы ищете COALESCE, которая возвращает первый ненулевое значение:

select 
    first_name, 
    last_name, 
    coalesce(commission_pct, manager_id, -1) 
from employees; 
Смежные вопросы