2016-07-29 35 views
0

unten ist ein Teil meiner SQL-Abfrage, nur ein Teil, weil es ziemlich lang ist.SQL: CASE-Problem, Konvertierungsdatum

Das Problem ist, dass wenn ich CASE zu meiner Select-Anweisung hinzufügen, gibt es mir einen Fehler. NSO Review-Spalte enthält Datum. Jedoch ist das Datum nicht für alle Zeilen verfügbar und die Abfrage setzt stattdessen '1900-01-01'. Ich möchte dies durch NEIN ersetzen und wenn es einen anderen Wert gibt, dann gebe JA. Könnten Sie bitte

SELECT 'NSO Review' = ISNULL(tblTaskEventsHistory.TimeIn,''), 
     CASE CAST(tblTaskEventsHistory.TimeIn AS varchar(102)) 
     WHEN '1900' THEN 'NO' 
     ELSE 'YES' 
     END,  
     'Business Group' = ISNULL(MetadataBG.Value,''), 
     'CTN' = ISNULL(MetadataCT.Value,''), 

ERROR

Msg 1038, Ebene 15, Status 5, Linie 277 Ein Objekt oder Spaltenname fehlt oder ist leer helfen. Überprüfen Sie für SELECT INTO-Anweisungen, dass jede Spalte einen Namen hat. Suchen Sie bei anderen Anweisungen nach leeren Alias-Namen. Aliase, die als "" oder [] definiert sind, sind nicht erlaubt. Ändern Sie den Alias ​​in einen gültigen Namen. „Aliase definiert als‚‘oder [] sind nicht erlaubt“ und „überprüfen jede Spalte einen Namen“ hat:

+2

Bitte markieren Sie die RDBMS, die Sie verwenden, und die Fehlermeldung, die Sie bekommen haben, ist nicht in Ihrem Code – TheGameiswar

Antwort

0

Sie sollten, wie erwähnt, Verwenden Sie DateTime-Funktionen. Um einige Teile des Datums zu vergleichen, gibt es die Funktion DATEPART (https://msdn.microsoft.com/en-us/library/ms174420.aspx).

Dann könnten Sie dieses versuchen:

SELECT 
CASE WHEN DATEPART(yy, tblTaskEventsHistory.TimeIn) = 1900 THEN 'NO' 
ELSE 'YES' 
END AS Status; 

Hoffnung ‚es werde Ihnen helfen.

1

Sie sollten die Fehlermeldung folgen

SELECT NSO_Review = ISNULL(tblTaskEventsHistory.TimeIn,''), 
     TimeIn = CASE CAST(tblTaskEventsHistory.TimeIn AS varchar(102)) 
     WHEN '1900' THEN 'NO' 
     ELSE 'YES' 
     END, 
vor
+0

Ich habe vergessen zu sagen, dass es SELECT INTO. – MaciejPL

+0

Sein ist workig wie unten, aber ich erhalte alle Ja \t 'NSO Review' = ISNULL SELECT (tblTaskEventsHistory.TimeIn, ''), \t \t CASE \t tblTaskEventsHistory.TimeIn \t \t \t WHEN '1900' THEN 'NEIN' \t \t ELSE 'JA' \t \t ENDE AS NSORequest, – MaciejPL

0

Sie haben den Namen der Spalte für Ihre Fallanweisung verpasst.