Ich habe ein Skript, wo ich die unten genannten Ausdruck haben.SQL Server - Case Ausdruck und Zahlenformatierung
Die seltsame Sache, die passiert, ist, dass SQL alle Ergebnisse als Dezimal 18,1 ausgibt. Sogar die metricid 1 Datensätze, die als int geworfen werden sollten.
SELECT CASE
WHEN metricid = 1 then cast(result as int)
WHEN metricid = 2 then cast(result as decimal(18,1)
END as column1
from sometable
ich so etwas wie die folgenden als zweite Bedingung auch hinzugefügt, die bewertet werden sollten, nicht, weil 1 nicht = 3 (richtig?), Aber es wandelt noch alle Ergebnisse dezimal:
WHEN 1=3 and metricid = 2 then cast(result as decimal(18,1)
ich denke, dass ich die SQLs brach .... :(
Sie können nur pro Spalte einen Datentyp haben. 'Spalte1' ist eine einzelne Spalte. – Blorgbeard
Es gibt nichts Seltsames, eine Spalte kann nur einen Datentyp haben – Lamak
Es könnte hilfreich sein, wenn Sie den Unterschied zwischen einer * Anweisung * und einem * Ausdruck * verstanden haben. Was Sie verwenden, ist ein 'CASE' * Ausdruck *. Wie bei jedem Ausdruck gibt es einen Wert (pro Zeile) zurück. –