Benutzer mit den meisten Antworten
Bedingtes Auswerten von Werten innerhalb eines SQL-Statements (SELECT CASE ohne IIF)

Frage
-
Folgendes möchte ich erreichen
Innerhalb eines SQL-Statements soll ausgewertet werden, ob der Bruttobetrag einer Rechnung und der Skontofähige Betrag einer Rechnung abweichen, und nur wenn der skontofähige Betrag abweicht (Differenz > 1 Cent) , soll der Skontofähige Betrag auch in der Rechnung ausgewiesen werden. Ansonsten soll das Feld "leer" bleiben.
Eine Möglichkeit, die ich herausgefunden habe ist
SELECT CASE (ISNULL(SKONTOPROZENT1, 0) + ISNULL(SKONTOPROZENT2, 0) + ISNULL(SKONTOPROZENT3, 0))
WHEN 0 THEN ''
ELSE IIF(ABS(BETRAGBRUTTO - SKONTOBASIS1) > .0001, SKONTOBASIS1, '')
END AS SKONTOBASIS
Nun ist das IIF jedoch nicht in jeder MSSQL-Server-Version implementiert, sondern nur in neueren. Gibt es eine Möglichkeit das ohne IIF wie oben beschrieben abzubilden?
Antworten
-
- Als Antwort vorgeschlagen marc-sysadmn Montag, 9. September 2019 12:56
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Dienstag, 17. September 2019 05:28
Alle Antworten
-
- Als Antwort vorgeschlagen marc-sysadmn Montag, 9. September 2019 12:56
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Dienstag, 17. September 2019 05:28
-
IIF und ISNULL sind sowieso SQL-Server-Spezifisch.
Die SQL-Standard-Entsprechungen sind:
IIF = CASE WHEN ... THEN ... ELSE ... END
ISNULL = COALESCEDer Case hat den Vorteil, dass mehrere WHEN-Bedingungen zulässig sind, der Coalesce hat den Vorteil, dass mehr als 2 Ausdrücke aufgelistet werden können.