2017-06-25 5 views
-1

Ich versuche CASE Operator zu verwenden (in Oracle) für NULL Ersatz:SQL CASE fügt zusätzliche Spalte

SELECT 
orderID, 
shippedDate, 
CASE WHEN shippedDate IS NULL 
THEN 'Not Shipped' 
END 
FROM ORDERS 
WHERE SHIPPEDDATE is NULL; 

Aber aus irgendeinem Grunde fügt es eine zusätzliche Spalte mit meinem Wiederbeschaffungswert, anstatt sie zu ersetzen ShippedDate Null- Wert:

extra column

Was mache ich falsch?

Antwort

1

Sie zeigen 3 Werte in Select-Anweisung an, deshalb erhalten Sie eine solche Ausgabe. Zeige nur die order_id und den case_value an.

Verwenden Sie diese Abfrage:

SELECT 
orderID, 
CASE 
    WHEN shippedDate IS NULL THEN 'Not Shipped' 
    END 
AS shippedFinalDate 
FROM ORDERS 
WHERE SHIPPEDDATE is NULL; 
+1

danke, es funktioniert) –

1

Sie müssen nur die tatsächlichen ShippedDate Spalte auszuschließen. Wenn Sie es nicht wollen, dann schließen Sie es nicht ein. Es ist nicht erforderlich, damit die CASE-Anweisung funktioniert.

SELECT 
    orderID, 
    CASE WHEN shippedDate IS NULL 
    THEN 'Not Shipped' 
    ELSE 'Shipped' 
    END 
FROM ORDERS 
WHERE SHIPPEDDATE is NULL; 
+1

Sie danken es auch) –

+0

@MichaelBobryashov kein Problem funktioniert. Bitte denken Sie daran, die beste Antwort als akzeptiert zu markieren, danke. – ADyson