2016-07-11 16 views
-1

Ich verwende Microsoft SQL Management Studio und ich versuche, CASE WHEN zu verwenden. Hier ist mein Problem, mein Code wie folgt:CASE WANN zeigt Fehler

SELECT CASE WHEN INCIDENT_RK = 52377 
THEN CASE_RK = NULL 
ELSE CASE_RK 
END 
) 
FROM ABC ; 

Was ich tun möchte, ist, wenn INCIDENT_RK 52377 ist, dann CASE_RK ist das Original CASE_RK auf NULL sonst folgen zurück.

Es sollte ziemlich geradlinig sein, aber es gibt rote Unterstreichungen unter INCIDENT_RK, =, ELSE,) Ich finde es komisch, weil ich einen CASE WENN früher heute gemacht habe und es funktioniert gut. Unten ist der Arbeitscode:

CASE WHEN CASE_RK NOT BETWEEN 1 AND 2    
     THEN CASE_RK+75961    
     ELSE CASE_RK     
     END    
     )  
FROM ABC  

Ihre Frage

EDIT 2: ich den folgenden Code auch versucht, aber noch kein Glück:

CASE WHEN INCIDENT_RK = '52080'    
     THEN NULL    
     ELSE CASE_RK     
     END AS CASE_RK 

     )  
FROM ABC 

EDIT 3: Ich habe diesen Code Versuchte .

Endlich kann ausgeführt werden. Ich habe jedoch nur 1 Reihe INCIDENT_RK = 100, aber es gibt mehr als 50 CASE_RK

+1

entfernen, die unerwünschte * schließen Klammer * –

+0

habe ich versucht, diesen Code: SELECT CASE WHEN INCIDENT_RK = 52080 \t \t \t THEN NULL \t \t \t \t ELSE CASE_RK \t \t \t \t ENDE AS FALL_RK \t VON ABC \t \t \t \t Endlich kann ausgeführt werden. Allerdings habe ich nur 1 Zeile von INCIDENT_RK = 100, aber es gibt mehr als 50 CASE_RK ist auf NULL gesetzt. Kann mir jemand helfen? –

Antwort

0

die enge Klammern,

entfernt auf NULL gesetzt ist
SELECT CASE WHEN INCIDENT_RK = 52377 
THEN CASE_RK = NULL 
ELSE CASE_RK 
END 
FROM ABC; 
+0

habe ich versucht, diesen Code: SELECT CASE WHEN INCIDENT_RK = 52080 \t \t \t THEN NULL \t \t \t \t ELSE \t CASE_RK \t \t \t END AS CASE_RK \t VON ABC \t \t \t \t Schließlich ausführen kann. Allerdings habe ich nur 1 Zeile von INCIDENT_RK = 100, aber es gibt mehr als 50 CASE_RK ist auf NULL gesetzt. Kann mir jemand helfen? –

+0

Wenn Sie mehrere Bedingungen haben, trennen Sie sie mit einem "Fall wenn" mit mehreren "Dann" Bedingungen. Hoffe, das ist klar. – Lucky

1

Ihr Fall Syntax sieht falsch.

Ein Fall gibt eine Anweisung zurück, sie weist die Anweisung nicht zu.
Beachten Sie den Unterschied zwischen Ihrem Beispiel, das und die man arbeitet, das nicht den Fall tut, dass in dem einen, das nicht Sie CASE_RK = NULL

So auf dem Rest des Codes der Anfrage abhängig zuweisen nicht versuchen, es sollte etwas sein, entlang der Linie von:

SELECT CASE WHEN INCIDENT_RK = 52377 
    THEN NULL 
    ELSE CASE_RK 
END AS CASE_RK  
FROM ABC  
+0

habe ich versucht, diesen Code: SELECT CASE WHEN INCIDENT_RK = 52080 \t \t \t THEN NULL \t \t \t \t ELSE \t CASE_RK \t \t \t END AS CASE_RK \t VON ABC \t \t \t \t Schließlich ausführen kann. Allerdings habe ich nur 1 Zeile von INCIDENT_RK = 100, aber es gibt mehr als 50 CASE_RK ist auf NULL gesetzt. Kann mir jemand helfen? –

0

Sie haben einige ungültige Klammern. Sie möchten auch CASE_RK nicht auf NULL setzen, sondern nur NULL anzeigen.

SELECT CASE_RK = CASE WHEN INCIDENT_RK = 52377 
    THEN NULL 
    ELSE CASE_RK 
END 
FROM ABC; 
+0

habe ich versucht, diesen Code: SELECT CASE WHEN INCIDENT_RK = 52080 \t \t \t THEN NULL \t \t \t \t ELSE \t CASE_RK \t \t \t END AS CASE_RK \t VON ABC \t \t \t \t Schließlich ausführen kann. Allerdings habe ich nur 1 Zeile von INCIDENT_RK = 100, aber es gibt mehr als 50 CASE_RK ist auf NULL gesetzt. Kann mir jemand helfen? –

0

Es scheint falsche Syntax in Ihrer Abfrage. Sie müssen die geschweiften Klammern aus Ihrer Abfrage entfernen. Bitte versuchen Sie die folgende Abfrage:

SELECT CASE WHEN INCIDENT_RK = 52377 
THEN CASE_RK = NULL 
ELSE CASE_RK 
END 
FROM ABC;