[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2004
    Beiträge
    184

    Problem SQL Summenbildung

    Hallo Kollegen,

    ich soll aus 3 Datei folgendes bilden:

    Artikel_Datei :

    Artikel-Nr 1
    Artikel-Nr 2
    Artikel-Nr 3

    Lager_Datei :

    Artikel-Nr 1, Lagerbestand
    Artikel-Nr 2, Lagerbestand
    Artikel-Nr 3, Lagerbestand


    Abgangsdatei:

    Artikel-Nr 1, Umsatz1
    Artikel-Nr 1, Umsatz2
    Artikel-Nr 1, Umsatz3
    Artikel-Nr 2, Umsatz1
    Artikel-Nr 2, Umsatz2
    Artikel-Nr 2, Umsatz3
    Artikel-Nr 3, Umsatz1
    Artikel-Nr 3, Umsatz2
    Artikel-Nr 3, Umsatz3

    als Ergebnis sollte herauskommen:

    Artikel-Nr 1, Lagerbestand, sum(aus abgangsdatei)
    Artikel-Nr 2, Lagerbestand, sum(aus Abgangsdatei)
    Artikel-Nr 3, Lagerbestand, sum(aus Abgangsdatei)

    Ich bekomme das mit SQL nicht hin????

    Hat einer von Euch eine Idee?

    Danke im Voraus für Eure Hilfe
    Gruß
    Jenne

  2. #2
    Registriert seit
    Sep 2004
    Beiträge
    136
    Gibt es in der Lager-Datei immer nur einen Satz pro Artikel?

    Kannst Dein bisheriges Statement mal posten, dann kann man besser bei dem Problem helfen, oder hast Du generell Probleme das in SQL abzubilden?

    Xanas

  3. #3
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Vielleicht so (aber ohne Gewähr).

    PHP-Code:
    SELECT A.ARTIKELB.BESTANDSUM(U.UMSATZ

    FROM FILE1 AS 

    LEFT OUTER JOIN FILE2 
    AS B ON A.ARTIKEL=B.ARTIKEL 
    LEFT OUTER JOIN FILE3 
    AS U ON A.ARTIKEL=U.ARTIKEL

    GROUP BY A
    .ARTIKELB.BESTAND
    ORDER BY A
    .ARTIKELB.BESTAND 

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Das Problem ist, dass der Lagerbestand nur 1 x pro Artikel, der Umsatz aber n x pro Artikel auftritt.
    Du musst daher für den Bestand den Durchschnitt AVG(Lagerbestand) bilden.

    select Artikel, avg(b.Lagerbestand), sum(c.Umsatz)
    from Artikel a
    left join Lager b on a.Artikel=b.Artikel
    left join Umsatz c on a.Artikel=c.Artikel

    Klarer wirds mit einer CTE:

    with
    xUms as (select Artikel, sum(Umsatz) as Umsatz from UmsatzDatei group by Artikel)
    ,
    xLager as (select Artikel, sum(Bestand) as Bestand from Lager group by Artikel)

    select Artikel, Bestand, Umsatz
    from ArtikelDatei A
    left join xLager b on a.Artikel=b.Artikel
    left join xUmsatz c on a.Artikel=c.Artikel
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Jan 2001
    Beiträge
    340
    ungefähr so:

    PHP-Code:
    with x as 
       ( 
    select ArtikelNrcoalesce(sum(Umsatz), 0) as Umsatz
         from UmsatzDatei
         group by ArtikelNr
       
    )
    select ...
    from Artikel
       join Bestand on 
    ...
       
    join x on ... 

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... mir gefällt in diesem Fall die Subselect Variante ganz gut:
    PHP-Code:
    select a.*, l.*, (select coalesce(sum(umsatz), 0)       
                         
    from abgang g                      
                         where g
    .artikel a.artikelumsatz
      from artikel a                                        
        left join lager l                                   
         on a
    .artikel l.artikel 
    wenn es mehrere Sätze in Lager für einen artikel geben kann, muss man im äußeren Select pro Artikel gruppieren und aufsummieren. Kann es auch sein, dass kein Lagersatz da ist, empfiehlt sich über das Bestandsfeld eine coalesce Funktion, analog zu dem umsatfeld.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  7. #7
    Registriert seit
    May 2004
    Beiträge
    184
    Danke an Alle,

    mit dem join hat super funktioniert.


    Gruß
    Jenne

Similar Threads

  1. problem mit eigener sql function
    By Stefan_Sk in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 26-05-06, 16:37
  2. SQL Problem
    By Lucky4712 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-05-06, 15:57
  3. Problem bei Abfrage bei Imbedded SQL
    By cbe in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 08-06-05, 16:21
  4. embedded SQL Performance Problem mit SCROLL
    By itec01 in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 16-09-04, 18:38
  5. SQL Summenbildung abhängig von einem Kennzeichen
    By cicero22 in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 28-04-04, 14:10

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •