1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Summe über mehrere Unterabfragen wenn IS NULL

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von MysterioJN, 4 August 2016.

  1. MysterioJN

    MysterioJN Datenbank-Guru

    Hi zusammen,

    Eine Summe über Unterabfragen ist mir klar.
    Unterabfrage 1 + Unterabfrage 2 AS blabla

    Problem ist, es kann auch vorkommen, das ein Ergebnis einer Unterabfrage = NULL ist, dann klappt das mit der Summe nicht mehr, bzw. das Ergebnis ist NULL.

    Also hab ich einen CASE verwendet:

    CASE WHEN unterabfrage1 IS NULL
    THEN '0'
    ELSE unterabfrage1
    END

    +

    CASE WHEN unterabfrage2 IS NULL
    THEN '0'
    ELSE unterabfrage2
    END

    Das funktioniert ohne Fehler, liefert mir dennoch nicht die '0' an stelle von NULL und auch das Ergebnis bleib NULL


    Habt ihr einen Tipp für mich?

    LG
    Marco


    EDIT:

    Wenn ich ISNULL oder COALESCE davor schreibe, bleiben die Werte dennoch bei NULL (weil es im Zweifel keinen Datensatz dazu gibt)
     
    Zuletzt bearbeitet: 4 August 2016
  2. MysterioJN

    MysterioJN Datenbank-Guru

    Leider kann ich nicht mehr editieren. Ich bekomm aber scheinbar schon grundsätzlich ein Problem bei SUM(sub1 + sub2):


    Eine Aggregatfunktion kann auf einem Ausdruck, der ein Aggregat oder eine Unterabfrage enthält, nicht ausgeführt werden.
     
  3. akretschmer

    akretschmer Datenbank-Guru

    Code:
    test=*# select (select 1) + (select 2);
     ?column?
    ----------
      3
    (1 Zeile)
    
    test=*# select (select 1) + (select null::int);
     ?column?
    ----------
       
    (1 Zeile)
    
    test=*# select (select 1) + coalesce((select null::int),0);
     ?column?
    ----------
      1
    (1 Zeile)
    
    test=*#
    

    Das sollte, denke ich, in allen Datenbanken so sein.
     
  4. ukulele

    ukulele Datenbank-Guru

    Wenn du 0 in Hochkomma setzt handelt es sich um Text. Mit + kann man Zeichenfolgen verketten aber sum() kann darauf nicht angewand werden. In jedem Fall sollte sum(isnull(spalte1,0) + isnull(spalte2,0)) AS blabla funktionieren, ansonsten liegt das Problem an anderer Stelle.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden