2016-04-03 18 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'がnullであるかどうかにかかわらず、' commission_pct'がヌルのときは常に 'manager_id'を返します。それは '...いつcommission_pctがNULLであり、manager_idがNULLではないのでmanager_id ELSE -1 END'でなければなりません。 –

答えて

3

あなたは最初の非NULL値を返しますCOALESCEを探しています:

select 
    first_name, 
    last_name, 
    coalesce(commission_pct, manager_id, -1) 
from employees; 
関連する問題