Ich versuche prozentuale Änderung von 2 Spalten zu berechnen. Da Sie eine Fehlermeldung erhalten, wenn Sie durch 0 teilen, wollte ich eine CASE
erstellen, die automatisch 0s behandelt und dann nicht-Nullen behandelt.SQL Server - Berechnung Prozentuale Änderung mit 0 CASE
Das Verhalten, das ich versuche zu implementieren ist: Wenn StartValue 0 ist, dann sind die möglichen Ergebnisse 0 oder 1 (da der aktuelle Wert entweder positiv oder gleich geblieben ist). Wenn der Startwert nicht 0 ist, erhalten Sie die prozentuale Änderung, aber begrenzen Sie das Ergebnis auf -1 bis +1.
UPDATE #Temp
SET ValueChange =
CASE
WHEN StartValue = 0 THEN (CASE
WHEN CurrentValue = 0 THEN 0
WHEN CurrentValue > 1 THEN 1
ELSE 0
END)
ELSE
WHEN ((CurrentValue - StartValue)/StartValue) > 1 THEN 1
WHEN ((CurrentValue - StartValue)/StartValue) < -1 THEN -1
ELSE ((CurrentValue - StartValue)/StartValue)
END;
Wenn ich diese Abfrage ausführen, bekomme ich diesen Fehler: Incorrect syntax near the keyword 'WHEN'.
, die den WHEN ((CurrentValue - StartValue)/StartValue) > 1 THEN 1
Abschnitt des Codes verweist.
Gedanken über den besten Weg, um diese Logik zu implementieren?