[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Apr 2012
    Beiträge
    360

    Sql Summen bilden

    Mahlzeit,

    ich möchte gerne Summen aus 2 Dateien bilden.
    ZW1 sind Vorgabezeiten hinterlegt.
    ZW2 sind Stempelungen der Mitarbeiter hinterlegt.

    Da ja ein Auftrag mehrfach mit der selben Tätigkeit angestempelt werden kann,
    bekomme ich bei der Vorgabezeit (W1VZT) falsche Werte,
    da die Vorgabezeit immer wieder aufsummiert wird.

    Ich habe schon versucht die Aufträge herauszufilter und mit einem Subselect zu füllen,
    aber hat nichts geholfen
    Ich bräuchte das W1Auf einfach distinct,
    aber wie bekomme ich das in diesem Statement unter?

    Code:
    SELECT SUM(W2MIN), SUM(W1VZT)                 
    FROM ZW1, ZW2 
    WHERE W1AUF = W2AUF     
    AND W1FNE = W2FNR 
    AND W2PNR = W1PNR 
    AND W2PNR = 36166 
    AND W2DAT = 20121001

    W1MIN = gestempelte Zeit
    W2VZT = Vorgabezeit
    W1FNE = W2FNR (Folgenummer wo ersichtlich ist welche Stempelung zusammengehören)


    Gruß

    Tarki

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Dann machs doch distinct:

    sum(distinct Wert)

    summiert nur eindeutige Werte.
    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

  3. #3
    Registriert seit
    Apr 2012
    Beiträge
    360
    Diese Variante hatte ich schon ausprobiert.

    Mit SELECT SUM(W2MIN), SUM(W1VZT), W2AUF etc..

    bekomme ich 3 Zeilen, wo die Teilsummen stimmen,

    aber sobald ich das W2AUF im select weglasse,
    ist das Ergebnis nicht korrekt.

  4. #4
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Ich habe mal ein ähnliches Problem gehabt.
    Bin mir jetzt nicht sicher, aber ich glaube, du musst zuerst die Summe für jede Tabelle einzeln machen.

    Hier mal mein Gedanke (Ungetestet!!)

    Code:
    With x as (SELECT W1AUF, W1FNE, W1PNR , SUM(W1VZT) W1VZT
    FROM ZW1 
    GROUP BY W1AUF, W1FNE, W1PNR),
     y as (SELECT W2AUF, W2FNR , W2PNR , SUM(W2MIN) W2MIN
    FROM ZW2 
    GROUP BY W2AUF, W2FNR , W2PNR)
    
    SELECT SUM(W2MIN), SUM(W1VZT)                 
    FROM x, y
    WHERE W1AUF = W2AUF     
    AND W1FNE = W2FNR 
    AND W2PNR = W1PNR 
    AND W2PNR = 36166 
    AND W2DAT = 20121001

    lg Andreas

  5. #5
    Registriert seit
    Mar 2003
    Beiträge
    80
    Ich würde das ungefähr so formulieren:
    ZW1 = Vorgaben
    ZW2 = Istzeiten

    With X as
    (Select w2auf, sum(w2min) as IST
    from ZW2
    Groupb by w2auf)
    Select A.w1auf, A.w1vzt, x.IST
    from ZW1 A
    Inner Join X on A.W1AUF=X.W2AUF

  6. #6
    Registriert seit
    Apr 2012
    Beiträge
    360
    Danke an alle!
    ich kannte bis dato with x nicht!

    kann ich das im Free einfach exec sql einfuegen?

  7. #7
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von tarkusch Beitrag anzeigen
    kann ich das im Free einfach exec sql einfuegen?
    Genau, dass kannst du ganz normal wie ein SELECT verwenden.

  8. #8
    Registriert seit
    Apr 2012
    Beiträge
    360
    Dankeschön und allen noch ein schönes Wochenende!

  9. #9
    Registriert seit
    Apr 2012
    Beiträge
    360
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    Ich habe mal ein ähnliches Problem gehabt.
    Bin mir jetzt nicht sicher, aber ich glaube, du musst zuerst die Summe für jede Tabelle einzeln machen.

    Hier mal mein Gedanke (Ungetestet!!)

    Code:
    With x as (SELECT W1AUF, W1FNE, W1PNR , SUM(W1VZT) W1VZT
    FROM ZW1 
    GROUP BY W1AUF, W1FNE, W1PNR),
     y as (SELECT W2AUF, W2FNR , W2PNR , SUM(W2MIN) W2MIN
    FROM ZW2 
    GROUP BY W2AUF, W2FNR , W2PNR)
    
    SELECT SUM(W2MIN), SUM(W1VZT)                 
    FROM x, y
    WHERE W1AUF = W2AUF     
    AND W1FNE = W2FNR 
    AND W2PNR = W1PNR 
    AND W2PNR = 36166 
    AND W2DAT = 20121001

    lg Andreas
    Hätte da bitte noch eine Frage:
    Wenn ich in dieser Abfrage noch von einer 3. Datei 2 Felder anzeigen möchte, wie zb. Auftragsnummer und Auftragsdatum.
    Wie müsste ich das formulieren.

    Habe im "with" Teil folgendes eingegeben Z ( Select Fir, Dat, From File group by fir, dat)

    Aber im letzten Select akzeptiert er mir die Felder Fir, Dat, etc. nicht.

    Wie muss ich das formulieren, dass ich auch die anderen Felder im Sql-statement sehe?

    Gruß

    Tarki

  10. #10
    Registriert seit
    Aug 2003
    Beiträge
    1.508

  11. #11
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Code:
    With x as (SELECT W1AUF, W1FNE, W1PNR , SUM(W1VZT) W1VZT
    FROM ZW1 
    GROUP BY W1AUF, W1FNE, W1PNR),
     y as (SELECT W2AUF, W2FNR , W2PNR , SUM(W2MIN) W2MIN
    FROM ZW2 
    GROUP BY W2AUF, W2FNR , W2PNR),
    z as ....  
    
    SELECT SUM(W2MIN), SUM(W1VZT) ,    max(z-Auftrag)           
    FROM x, y, z
    WHERE W1AUF = W2AUF     
    AND W1FNE = W2FNR 
    AND W2PNR = W1PNR 
    AND W2PNR = 36166 
    AND W2DAT = 20121001
    and w1-w2feld = z-feld      (natürlich die 'echte' verknüpfung)
    and ....
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  12. #12
    Registriert seit
    Apr 2012
    Beiträge
    360
    Hallo Andreas,

    wollte gerade posten, das ich das Group by mit den Feldern vergessen habe anzugeben.


    Gruß und noch einen schönen Feierabend

    Tarki

Similar Threads

  1. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  2. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  3. SQL und OBJLCK
    By malzusrex in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 19-09-06, 11:04
  4. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 14:11
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43

Berechtigungen

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