2016-06-18 16 views
0

Ich versuche, den folgenden CASE WHEN im berechneten Spaltenalias zu verwenden, aber es zeigt Syntaxfehler.Syntaxfehler beim Zuweisen von Spaltenwert mit CASE WHEN in berechneter Spalte Formel

[Password_Last_Changed] [datetime] AS 
SELECT CASE 
WHEN ([SUA_History1_Date] IS NOT NULL) then [SUA_History1_Date] 
WHEN ([SUA_History1_Date] IS NULL) then [SUA_History2_Date] 
WHEN ([SUA_History2_Date] IS NULL) then [SUA_History3_Date] 
WHEN ([SUA_History3_Date] IS NULL) then [SUA_History4_Date] 
WHEN ([SUA_History4_Date] IS NULL) then [SUA_History5_Date] 
ELSE NULL 
END 

Nicht sicher, was schief gelaufen ist. Wenn es einen besseren Ansatz für diese Logik gibt, lass es mich versuchen.

+1

Entfernen Sie das Schlüsselwort SELECT. Außerdem ist CASE "komisch". –

+1

Die letzten 3 'When' werden niemals ausgeführt –

Antwort

1

COALESCE Verwendung ist bessere Option als ISNULL oder CASE..WHEN für dieses Problem, da die Eingabewerte für den COALESCE Ausdruck können mehrfach ausgewertet werden.

Sie können auch NULLIF verwenden, um die Bedingungen in diesen NULL bewerteten Spalten zu überprüfen.

Ein NULL-Wert für ISNULL wird in den Datentyp int konvertiert, während für COALESCE ein Datentyp angegeben werden muss. ISNULL benötigt nur 2 Parameter, während COALESCE eine variable Anzahl von Parametern benötigt.

0

können Sie COALESCE verwenden:

COALESCE([SUA_History1_Date],[SUA_History2_Date],[SUA_History3_Date],[SUA_History4_Date],[SUA_History5_Date]) 

Wertet die Argumente um und gibt den aktuellen Wert des ersten Ausdrucks, die zunächst nicht auf NULL nicht auswertet.