Announcement

Collapse
No announcement yet.

Summen-Berechnung in SQL mit NULL-Werten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Summen-Berechnung in SQL mit NULL-Werten

    Hallo zusammen,

    ich möchte in einer Paradox-Tabelle per SQL über GROUP BY und SUM Felder summieren. Dabei kann es sein, dass manche der Werte-Felder = NULL sind. Sobald so ein Satz in einer Gruppe enthalten ist, ist auch die Summe = NULL. Gibt es eine Möglichkeit, dies zu korrigieren?
    Die Abfrage WHERE Feld <> NULL geht nicht, da ich auch Sätze angezeigt haben möchte, für die kein Wert eingegeben ist. Das Feld generell mit 0 belegen geht auch nicht, da es sich in Wirklichkeit um über LEFT OUTER JOIN verbundene tabellen handelt und manschmal eben gar kein Detailsatz vorhanden ist

    Gruß Gerd

  • #2
    Hallo Gerd

    where <feld> IS NOT NULL

    Gruß Andr

    Comment


    • #3
      Hallo Andre,

      WHERE feld IS NOT NULL geht nicht, da dann der satz gar niocht angezeigt wird. Ich möchte aber, dass er angezeigt wird, aber eben mit dem Feldergebnis NULL

      Gruß Ger

      Comment


      • #4
        Hallo Andre,

        WHERE feld IS NOT NULL geht nicht.
        Bei der Haupttabelle handelt es sich um eine Tabelle mit 2 Detailtabellen. In einer Detailtabellen werden Zeiten und die zugehörigen Kosten in der anderen Tabelle Artikel und zugehörige Materialkosten erfasst. Ich möchte nun über

        SELECT A.ArtNr, A.ID, A.Anzahl, sum(Z.Kosten)+sum(M.Kosten), sum(Z.Kosten), sum(M.Kosten)
        FROM Artikel A
        LEFT OUTER JOIN Zeit Z on Z.ArtNrID=A.ID
        LEFT OUTER JOIN Material M on M.ArtNrID=A.ID
        GROUP BY A.ArtNr, A.ID

        jeden Satz aus Artikel anzeigen und falls Kosten erfasst wurden, auch diese berechnen
        Bei obigem SQL werden zwar alle Sätze angezeigt, wenn aber nur für Zeit Kosten erfasst wurden, wird als Summe NULL berechnet, da z.B. 256+NULL=NULL. In sum(Z.Kosten) steht aber richtigerweise 256.
        Wie kann man hier dafür sorgen, dass die Summe richtig berechnet wird?

        Gruß Ger

        Comment


        • #5
          Hallo,

          WHERE feld IS NOT NULL geht nicht.
          Bei der Haupttabelle handelt es sich um eine Tabelle mit 2 Detailtabellen. In einer Detailtabellen werden Zeiten und die zugehörigen Kosten in der anderen Tabelle Artikel und zugehörige Materialkosten erfasst. Ich möchte nun über

          SELECT A.ArtNr, A.ID, A.Anzahl, sum(Z.Kosten)+sum(M.Kosten), sum(Z.Kosten), sum(M.Kosten)<br>
          FROM Artikel A<br>
          LEFT OUTER JOIN Zeit Z on Z.ArtNrID=A.ID<br>
          LEFT OUTER JOIN Material M on M.ArtNrID=A.ID<br>
          GROUP BY A.ArtNr, A.ID<br>

          jeden Satz aus Artikel anzeigen und falls Kosten erfasst wurden, auch diese berechnen
          Bei obigem SQL werden zwar alle Sätze angezeigt, wenn aber nur für Zeit Kosten erfasst wurden, wird als Summe NULL berechnet, da z.B. 256+NULL=NULL. In sum(Z.Kosten) steht aber richtigerweise 256.
          Wie kann man hier dafür sorgen, dass die Summe richtig berechnet wird?

          Gruß Ger

          Comment


          • #6
            Hallo,

            WHERE feld IS NOT NULL geht nicht.
            Bei der Haupttabelle handelt es sich um eine Tabelle mit 2 Detailtabellen. In einer Detailtabellen werden Zeiten und die zugehörigen Kosten in der anderen Tabelle Material und zugehörige Materialkosten erfasst. Ich möchte nun über

            SELECT A.ArtNr, A.ID, A.Anzahl, sum(Z.Kosten)+sum(M.Kosten), sum(Z.Kosten), sum(M.Kosten)<br>
            FROM Artikel A<br>
            LEFT OUTER JOIN Zeit Z on Z.ArtNrID=A.ID<br>
            LEFT OUTER JOIN Material M on M.ArtNrID=A.ID<br>
            GROUP BY A.ArtNr, A.ID, A.Anzahl<br>

            jeden Satz aus Artikel anzeigen und falls Kosten erfasst wurden, auch diese berechnen
            Bei obigem SQL werden zwar alle Sätze angezeigt, wenn aber nur für Zeit Kosten erfasst wurden, wird als Summe NULL berechnet, da z.B. 256+NULL=NULL. In sum(Z.Kosten) steht aber richtigerweise 256.
            Wie kann man hier dafür sorgen, dass die Summe richtig berechnet wird?

            Gruß Ger

            Comment


            • #7
              Hi!<br>
              Bei der Erstellung der SQL Tabelle kann man einen Default Wert einrichten, der dafür sorgt, das das Feld 0 (nicht NULL) ist, wenn es nicht gesetzt wird. Somit hast Du keine NULL Werte mehr.<br>
              BYE BERND<br&gt

              Comment


              • #8
                Hallo,

                das hilft mir so auch nicht weiter. Ich weiß zwar, dass man beim Anlegen einer Datenbanktabelle Default-Werte festlegen kann, aber bei obigem Beispiel wird der Satz ja erst zur Abfragezeit erzeugt und wenn da in einer der beiden Tabellen (Material, Zeit) kein Satz vorhanden ist, wird das Ergebnis NULL zurückgegeben und damit auch die Gesamtsumme auf NULL gesetzt. Wie soll ich da einen Default-Wert setzen?

                Gruß Ger

                Comment


                • #9
                  I see!<br>
                  Vielleicht die Antworttabelle überarbeiten?<br>
                  BYE BERND<br&gt

                  Comment

                  Working...
                  X