none
Bedingtes Auswerten von Werten innerhalb eines SQL-Statements (SELECT CASE ohne IIF) RRS feed

  • 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?

    Montag, 9. September 2019 11:47

Antworten

  • Da kannst Du auch mit CASE WHEN arbeiten:

    SELECT CASE (ISNULL(SKONTOPROZENT1, 0) + ISNULL(SKONTOPROZENT2, 0) + ISNULL(SKONTOPROZENT3, 0))
           WHEN 0 THEN ''
           ELSE CASE WHEN ABS(BETRAGBRUTTO - SKONTOBASIS1) > .0001 
                     THEN SKONTOBASIS1 
                     ELSE '' END
           END AS SKONTOBASIS


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Montag, 9. September 2019 12:16

Alle Antworten

  • Da kannst Du auch mit CASE WHEN arbeiten:

    SELECT CASE (ISNULL(SKONTOPROZENT1, 0) + ISNULL(SKONTOPROZENT2, 0) + ISNULL(SKONTOPROZENT3, 0))
           WHEN 0 THEN ''
           ELSE CASE WHEN ABS(BETRAGBRUTTO - SKONTOBASIS1) > .0001 
                     THEN SKONTOBASIS1 
                     ELSE '' END
           END AS SKONTOBASIS


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Montag, 9. September 2019 12:16
  • IIF und ISNULL sind sowieso SQL-Server-Spezifisch.
    Die SQL-Standard-Entsprechungen sind:
    IIF = CASE WHEN ... THEN ... ELSE ... END
    ISNULL = COALESCE

    Der 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.

    Montag, 9. September 2019 14:28