[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Du musst dem Kind Max(VGZT) einen Namen geben und diesen verwenden.

    Ich würde an dieser Stelle auch keinen Sub-Select verwenden sondern eine CTE (Common Table Expression) vorziehen. Verschachtelte Sub-Selects werden schnell unüberschaubar.

    Code:
    With x as (Select GNR, TNR, ZNR, Max(VGZT) MaxVGZT
                 From YourFile
                 Group By GNR, TNR, ZNR)
    Select Sum(MaxVGZT)
    From X;
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  2. #2
    Registriert seit
    Apr 2012
    Beiträge
    360
    Danke Andreas und Birgitta für eure Hilfe.

  3. #3
    Registriert seit
    Apr 2012
    Beiträge
    360
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Du musst dem Kind Max(VGZT) einen Namen geben und diesen verwenden.

    Ich würde an dieser Stelle auch keinen Sub-Select verwenden sondern eine CTE (Common Table Expression) vorziehen. Verschachtelte Sub-Selects werden schnell unüberschaubar.

    Code:
    With x as (Select GNR, TNR, ZNR, Max(VGZT) MaxVGZT
                 From YourFile
                 Group By GNR, TNR, ZNR)
    Select Sum(MaxVGZT)
    From X;
    Birgitta
    Hallo Brigitta,

    wenn ich noch die 2 anderen Felder dazufüge seq und Pnr verfälscht das mein Ergebnis(1061).

    Die richtigen Minuten sind 821.

    Gibt es da noch eine Möglichkeit diese Statement zu verfeinern?

  4. #4
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Vielleicht brauchst du sowas?:

    Code:
    With x as (Select GNR, TNR, ZNR, Max(VGZT) MaxVGZT
                 From YourFile
                 Group By GNR, TNR, ZNR),
     y as (select * from YourFile)
    Select y.seq, y.PNR, Sum(x.MaxVGZT)
    From X, Y
    where x.gnr = y.gnr
    And   x.tnr = y.tnr
    and   x.znr = y.znr;
    (ungetestet)

  5. #5
    Registriert seit
    Apr 2012
    Beiträge
    360
    Andreas ich habe das Statement leider so nicht hinbekommen.

    Habe das Sql in 2 Statements zerlegt.

    Thx


    Tarki

  6. #6
    Registriert seit
    Apr 2012
    Beiträge
    360
    Hi,

    bekomme bei unten angeführten Statement die Meldung:
    Ergebnis der Anweisung enthält mehr als eine Zeile.

    Aber unten steht ja select sum(MaxVZT).

    Ist eigentlich in dem Statement möglich, das ich dort ein Subselect, was bestimmte Aufträge auswählt, möglich?

    oder wie löse ich das anders?

    Dank im Voraus


    Code:
    with x as (                                                 
    SELECT GNR1, TNR1, ZNR1, max(VZT) MaxVZT                    
    FROM MyFile1 WHERE auf1 = (select AUF2 from MyFile2 WHERE   
    DAT >= 20121101 AND DAT <= 20121130)                        
                                                                
    group by GNR1, TNR1, ZNR1)                                  
    select sum(MaxVZT)                                          
                                                                
    From x

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    with x as (
    SELECT GNR1, TNR1, ZNR1, max(VZT) MaxVZT
    FROM MyFile1 WHERE auf1 in (select AUF2 from MyFile2 WHERE
    DAT >= 20121101 AND DAT <= 20121130)

    group by GNR1, TNR1, ZNR1)
    select sum(MaxVZT)

    From x

    Der Subselect im Where liefert mehr als eine Zeile.
    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

  8. #8
    Registriert seit
    Apr 2012
    Beiträge
    360
    was muss ich eigentlich definieren dass ich nur eine Gesamtsumme bekomme?

  9. #9
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von tarkusch Beitrag anzeigen
    was muss ich eigentlich definieren dass ich nur eine Gesamtsumme bekomme?
    Was genau meinst du damit?
    Um einfach "NUR" eine Summe zu bekommen, verwendest du MAX().

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Nur eine Summe ?
    Einfach "select sum(MyField) from Myfile where ...".
    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

  11. #11
    Registriert seit
    Apr 2012
    Beiträge
    360
    Sorry Fehler war meinerseits.

Similar Threads

  1. Sql Summen bilden
    By tarkusch in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 03-12-12, 15:24
  2. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  3. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  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
  •