2012-03-29 17 views
1

Ich betreibe folgende Abfrage ..SQL Server 2005 CASE WHEN THEN END

Select T1.* from T1 
LEFT JOIN T2 ON T1.C1 = T2.C1 
LEFT JOIN T3 ON T2.C3 = T3.C3 
ORDER BY Case When T1.C1 = 'ABC' THEN 'XYZ' END AS COMMENTS 

Sein geben mir Syntaxfehler in der Nähe von AS. Der Fehler konnte nicht ermittelt werden.

+0

Motiv -> Ich möchte das Vergleichsergebnis in einem Spaltennamen Kommentare speichern. Sollte ich IF-Anweisung mit ORDER BY dafür verwenden? –

Antwort

3

Es ist mit Fall, weil Sie einen Alias ​​zu der ORDER BY-Klausel zuweisen versuchen - das und ich nicht nicht erlaubt ist, bin Sicher was willst du hier erreichen?

Sie müssen entweder:

Select T1.* from T1 
LEFT JOIN T2 ON T1.C1 = T2.C1 
LEFT JOIN T3 ON T2.C3 = T3.C3 
ORDER BY Case When T1.C1 = 'ABC' THEN 'XYZ' END 

Oder, wenn Sie, dass CASE Wert wollen auch in der SELECT zurückgegeben werden, dann müssen Sie:

Select T1.*, Case When T1.C1 = 'ABC' THEN 'XYZ' END AS COMMENTS 
from T1 
    LEFT JOIN T2 ON T1.C1 = T2.C1 
    LEFT JOIN T3 ON T2.C3 = T3.C3 
ORDER BY Case When T1.C1 = 'ABC' THEN 'XYZ' END 

Auch wieder nicht sicher, ob der Absicht Hier kommt es darauf an, aber Sie brauchen möglicherweise einen ELSE auf diesem Fall ... zB

ORDER BY CASE WHEN T1.C1 = 'ABC' THEN 'XYZ' ELSE T1.C1 END 
+0

Was, wenn ich das Vergleichsergebnis in einem anderen Spaltennamen speichern möchte Kommentare .. wird IF-Anweisung nützlich sein ?? –

+0

@rahulshukla - Kannst du es ausarbeiten, ich folge nicht ganz? Mein zweites Beispiel oben gibt das Ergebnis des Vergleichs in einer zusätzlichen Spalte "KOMMENTARE" zurück - meinst du das? – AdaTheDev

+0

Ja! Danke, ich habe es. Ich sollte es in deinem zweiten Beispiel aufteilen. –

4

Sie den AS alias nicht brauchen, wenn sie in einer Reihenfolge von

Select T1.* from T1 
LEFT JOIN T2 ON T1.C1 = T2.C1 
LEFT JOIN T3 ON T2.C3 = T3.C3 
ORDER BY Case When T1.C1 = 'ABC' THEN 'XYZ' END 
+0

Ich bin mir nicht bewusst, dass 'AS' überhaupt gebraucht wird, in einem' ORDER BY'. –

+0

Was, wenn ich das Vergleichsergebnis in einem anderen Spaltennamen speichern möchte Kommentare .. wird IF-Anweisung nützlich sein ?? –

Verwandte Themen