[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2005
    Beiträge
    28

    SQL Summen aus mehreren Tabellen mit unterschiedlicher Satzanzahl

    Ich möchte aus 2 verschiedenen Dateien jeweils Summen bekommen, unabhängig wieviele Sätze mit gleichem Schlüssel in den jeweiligen Dateien stehen

    Tabelle1:
    Nummer, Position, Sollkosten

    Tabelle2:
    Nummer, Position, Istkosten

    Tabelle1 ist immer mind. mit einem Satz gefüllt. Tabelle2 kann 0 bis N Sätze haben.

    select tabelle1.nummer, sum(sollkosten), sum(istkosten)
    from tabelle1 left join tabelle2 on tabelle1.nummer=tabelle2.nummer

    Problem: Wenn in Tabelle1 ein Satz steht und in Tabelle2 zwei Sätze, dann wird die Summe aus Tabelle1 verdoppelt. Wie kann ich das vermeiden?

    Danke & Gruß

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    1.583
    With a as (select nr, pos, sum(istkosten) from tab2 group by nummer)
    select tabelle1.nummer, sum(sollkosten), sum(istkosten)
    from tabelle1 left join a on tabelle1.nummer=a.nummer
    Interessante Umfrage zur Nutzung der AS/400

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    17.537
    Da hättest du eigentlich einen Fehler bekommen müssen, da der Group By einfach fehlt:

    select tabelle1.nummer, sum(sollkosten), sum(istkosten)
    from tabelle1 left join tabelle2 on tabelle1.nummer=tabelle2.nummer
    group by tabelle1.nummer
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Sep 2005
    Beiträge
    28
    Danke für die Hilfe. Ich hatte tatsächlich das GOUP BY in meinem Beitrag vergessen. Im Original hatte ich es natürlich drin. Die Lösung ist, dass ich die Istkosten vorher in der WITH Anweisung gruppiere. Korrekt lautet das Statement:
    With a as (select nr, sum(istkosten) as istkosten
    from tabelle2 group by tabelle2.nr)
    select tabelle1.nr, sum(sollkosten), sum(istkosten)
    from tabelle1 left join a on tabelle1.nr=a.nr
    group by tabelle1.nr

    DANKE Euch! :-)

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    17.537
    Das Problem besteht nicht in der obigen Aussage:

    "Problem: Wenn in Tabelle1 ein Satz steht und in Tabelle2 zwei Sätze, dann wird die Summe aus Tabelle1 verdoppelt."

    Hier kann es keine "Verdoppelung" kommen, da dies ja die Regel ist, wenn ich 1 Kopf und n Positionen habe (1:N-Beziehung).
    Dein Problem tritt dann auf, wenn in Tabelle 1 mehr als 1 Satz vorhanden ist. Dann tritt eben die Vervielfältigung ein und erzwingt eben ein getrenntes "Vorverdichten" von Tabelle 1 und 2, was eben einer N:M-Beziehung entspricht.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Nov 2003
    Beiträge
    2.220
    Naja, wenn man zu jeder der n Positionen den Kopf ermittelt, kann man leicht auf n Köpfe kommen...

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    17.537
    Dann hast du die Tabellen verdreht und eine N:1-Beziehung definiert;-).
    Deshalb gibt es ja auch noch den "Right [outer] Join", der das dann wieder gerade biegt.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    Registriert seit
    Nov 2003
    Beiträge
    2.220
    Wenn man per SQL mit einem SELECT zu einem (1) Kopf seine (N) Positionen dazuliest, sollte man in diesem SELECT besser nicht die Beträge dieses Kopfs aufsummieren...

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    17.537
    Stimmt, da könnte man MIN/MAX verwenden.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

Ähnliche Themen

  1. SQL Ermittlung von Summen über eine nicht verknüpfte Datei/Tabelle
    Von MiMarkow im Forum NEWSboard programmierung
    Antworten: 9
    Letzter Beitrag: 17-03-17, 08:39
  2. SQL Texte in unterschiedlicher länge
    Von Robi im Forum NEWSboard programmierung
    Antworten: 2
    Letzter Beitrag: 01-02-17, 11:46
  3. CPYF mit unterschiedlicher Anzahl Felder
    Von SabineK im Forum System i Hauptforum
    Antworten: 7
    Letzter Beitrag: 24-11-14, 19:18
  4. ein SFLCTL mit mehreren SFL-Records
    Von Malte im Forum NEWSboard programmierung
    Antworten: 10
    Letzter Beitrag: 17-10-14, 11:13
  5. NetServer mit mehreren IP's betreiben
    Von Starocotes im Forum System i Hauptforum
    Antworten: 1
    Letzter Beitrag: 10-11-13, 00:26

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •