2017-01-30 4 views
0

Ich habe diese CASE-Syntax:SQL Server als Fehler erwartete Gespräch

CASE WHEN (dbo.Futuredial_Validation.[Error Code]='1') 
THEN (dbo.Futuredial_Validation.LocalTime AS att.Date_cleared) END 
AS att.Date_cleared 

ich den Fehler Falsche Syntax nahe dem Schlüsselwort bin mit 'AS'. Kann mir jemand sagen, ob ich AS so in der Gehäusestruktur verwenden kann?

Antwort

5

Entfernen Sie die alias Namen in case Anweisung

CASE WHEN dbo.Futuredial_Validation.[Error Code]='1' THEN 
     dbo.Futuredial_Validation.LocalTime END AS [att.Date_cleared] 

auch Klammern hinzuzufügen, wenn es wirklich nötig ist. Hinzufügen von unerwünschten Klammern macht die Abfrage und Bedingungen ungeschickt

Eine weitere Verbesserung kann durch die Verwendung von Aliasnamen zu Ihrer Tabelle erfolgen Futuredial_Validation F

Abfrage wird wie

Select CASE WHEN F.[Error Code]='1' THEN F.LocalTime END AS [att.Date_cleared] 
From dbo.Futuredial_Validation F 

Wie in den Kommentaren erwähnt, ist es besser, Vermeiden Sie . in Alias-Namen sonst müssen Sie eckige Klammern verwenden, um es zu entkommen.

+0

OP - Ein Zusatz hier ist, dass Sie einen seltsamen Namen für den Alias. Warum ATT verwenden? Das wird dich zwingen, [] um den Alias ​​herum hinzuzufügen. also wäre es [att.Date_cleared]. Das Entfernen dieses Präfixes würde Ihr Leben viel einfacher machen. –

+0

@SeanLange - Habe das nicht bemerkt. Danke –

+0

Kein Problem @ Prdp. Ich denke, vielleicht ist das OP verwirrt und das ist ein existierender Tabellenalias, der natürlich erzeugt wird, und noch bizarrerer Fehler. :) –