2017-09-14 1 views
1

ich die Abfrage unten bin mit aber bekommen den FehlerEinstellung CASE-Anweisung, so dass alle Ergebnisse sind Varchar

'Conversion failed when converting the varchar value '8-14' to data type int.' 

Ich nehme sein, weil die zweite Zeile eine ganze Zahl ist zurückkehrt und der Rest ist nicht, ist das richtig ?

Ich werde dieses Feld nicht berechnen, also wenn sie alle den gleichen Typ von Wert haben müssen, die zweite Zeile zurückgeben, da varchar in Ordnung wäre. Ich habe 'convert' versucht, aber ich don Ich glaube nicht, dass ich meine Syntax richtig verstanden habe.

,(case when AppointmentCancellationDate = null Then 'NoDate' 
when (datediff(day,BasicStartDate,AppointmentCancellationDate)) < '8' then (datediff(day,BasicStartDate,AppointmentCancellationDate)) 
when (datediff(day,BasicStartDate,AppointmentCancellationDate)) <15 then '8-14' 
when (datediff(day,BasicStartDate,AppointmentCancellationDate)) <22 then '15-21' 
Else '+22' end) as CancWindowGroup 

Antwort

3

die folgenden Versuchen:

,(case when AppointmentCancellationDate is null Then 'NoDate' 
when (datediff(day,BasicStartDate,AppointmentCancellationDate)) <8 then cast(datediff(day,BasicStartDate,AppointmentCancellationDate) as nvarchar(10)) 
when (datediff(day,BasicStartDate,AppointmentCancellationDate)) <15 then '8-14' 
when (datediff(day,BasicStartDate,AppointmentCancellationDate)) <22 then '15-21' 
Else '+22' end) as CancWindowGroup 
+0

Danke sieht aus wie seine Arbeit –

+1

und Wechsel von '<'8'' zu' <8' –

+1

Und ändern '= null' zu 'ist null' – TriV

1

mit 'NoDate' das Ergebnis des Falles als varchar definieren. die zweite Zeile erzeugt int - also gibt es den Typ clash.

Verwandte Themen