2016-04-03 13 views
0

Ich will Ergebnisse produzieren können, dass Wenn es eine Provision sie es produziert Wenn kein Auftrag ist es, die manager_id produziert Wenn es keine manager_id oder Provision ist es produziert -1Wie korrigiere ich dieses Skript

Ich denke, ich könnte NLV2(NVL2(NVL2))) tun müssen, aber ich bin mir nicht sicher. Dies ist der Code, den ich produziert habe. Ich bin mir sicher, dass ich falsch liege.

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

Welche wahnsinnige Logik ist Ihre Anwendung, um festzustellen, ob die Untersuchung von „COMMISSION_PCT“ ID ein Manager ist, oder ein Provisionsprozentsatz? Mein Rat hier ist, * beide * zurückzukehren. –

+0

@ Mo920192: Ja, diese Abfrage ist falsch. Sie geben 'manager_id' immer dann zurück, wenn 'commission_pct' null ist, unabhängig davon, ob 'manager_id' gleich null ist oder nicht. Es müsste "... WENN commission_pct IST NULL UND manager_id IST NICHT NULL DANN manager_id ELSE -1 END". –

Antwort

3

Sie suchen COALESCE, die den ersten Nicht-Null-Wert zurückgibt:

select 
    first_name, 
    last_name, 
    coalesce(commission_pct, manager_id, -1) 
from employees; 
Verwandte Themen