[NEWSboard IBMi Forum]

Thema: SQL Problem

  1. #1
    Registriert seit
    Jan 2008
    Beiträge
    93

    SQL Problem

    Hallo allerseits,

    ich habe ein kleines Problem, welches ich mit einer SQL Abfrage lüsen möchte.

    Ich habe eine Lagerbewegungsdatei, in der alle Lagerbewegungen mit Teilenummer, Bewegungsdatum, Bewegungsschlüssel, Menge etc. erfasst sind.

    Ziel ist es, für jede Teilenummer das jeweils älteste Bewegungsdatum mit einem bestimmten Bewegungsschlüssel zu finden.

    Kann mir da jemand helfen?

    Vielen Dank und Gruss

    Alexander May

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.254
    Wie wärs damit:

    select lbfirm, lbwknr, lbtenr, max(lbdate)
    from lgbw
    where ... lbbwsl='xx'
    group by lbfirm, lbwknr, lbtenr
    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
    Aug 2001
    Beiträge
    2.877
    Wie wär's damit

    PHP-Code:
    Select TeileNrMax(BewDatum)
    From LagBew
    Where BewSchl 
    'XX'
    Group By TeileNr
    Wenn Du jeweils den kompletten Datensatz brauchst, musst Du zusätzlich entweder eine Common Table Expression oder ein Sub-Select verwenden:

    PHP-Code:
    With x as (Select TeileNrMax(BewDatum) as MinDat
                  From LagBew
                  Where BewSchl 
    'XX'
                  
    Group By TeileNr)
    Select a.*
    from x join LagBew a on     x.TeileNr a.TeileNr 
                            
    and MinDat a.BewDatum
                            
    and a.BewSchl 'XX' 
    Birgitta
    Birgitta Hauser

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

  4. #4
    Registriert seit
    Jan 2008
    Beiträge
    93
    Hallo Ihr Beiden,

    vielen Dank, habt mir sehr geholfen, ich stand mal wieder auf der Leitung/Schlauch etc..........

    Grüsse

    Alexander

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.288
    ... wobei man da mehrere Sätze bekommen könnte, wenn es an dem ältesten Datum 2 Bewegungen gab, was einem bei dem Subselect auf die Füße fällt.
    Bei den CTEs finde ich die Syntax ein wenig seltsam (wo muss das Ding stehen), die je nach Statement variiert, verschärft dadurch, dass unterschiedliche Datenbanken sich da unterschiedlich darstellen. Deswegen ziehe ich zuweilen einen nested select vor ala:

    Select a.*
    from (Select TeileNr, Max(BewDatum) as MinDat
    From LagBew
    Where BewSchl = 'XX'
    Group By TeileNr) x
    join LagBew a on x.TeileNr = a.TeileNr
    and MinDat = a.BewDatum
    and a.BewSchl = 'XX'

    Zitat Zitat von B.Hauser Beitrag anzeigen
    Wie wär's damit

    PHP-Code:
    Select TeileNrMax(BewDatum)
    From LagBew
    Where BewSchl 
    'XX'
    Group By TeileNr
    Wenn Du jeweils den kompletten Datensatz brauchst, musst Du zusätzlich entweder eine Common Table Expression oder ein Sub-Select verwenden:

    PHP-Code:
    With x as (Select TeileNrMax(BewDatum) as MinDat
                  From LagBew
                  Where BewSchl 
    'XX'
                  
    Group By TeileNr)
    Select a.*
    from x join LagBew a on     x.TeileNr a.TeileNr 
                            
    and MinDat a.BewDatum
                            
    and a.BewSchl 'XX' 
    Birgitta
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.877
    CTEs sind doch ganz einfach:
    • Das sind temporäre Views, die nur für das aktuelle Statement gelten, die vor dem eigentlichen Select-Statement angegeben werden müssen.
    • Werden mehrere CTEs verwendet, werden diese einfach durch Kommata getrennt aufgelistet.


    Ich vermeide Sub-Selects soweit möglich, einfach aus dem Grund spätestenfalls wenn man das 3. Sub-Select verschachtelt, ist die Anweisung nicht mehr lesbar.

    ... im richtigen Leben hätte man statt den verschachtelten Sub-Selects oder den Common-Table-Expressions entsprechende Views, die eingesetzt werden. Und schwupp entspricht die Abfrage dem endgültigen Select-Statement in der Variante mit CTEs.

    Birgitta
    Birgitta Hauser

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

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. Problem bei ILE COBOL mit sql connect to
    By rebe in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 07-09-01, 13:55

Berechtigungen

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