[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2001
    Beiträge
    38

    Queryabfrage nach höchster Wert

    Hallo zusammen,

    Gibt es mit QUERY eine Möglichkeit immer nur den Satz mit dem höchsten Wert in eine Ausgabedatei zustellen?
    Beispiel: In meiner Artikelkalkulationsdatei habe ich je Artikel zahlreiche Kalkulationssätze mit unterschiedlichen Datums stehen. Ich will aber nur mit dem Satz, welcher das neueste Datum hat, weiterarbeiten.

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hallo,

    im Query/400 geht das nur mit 2 Queries und Zwischendatei:
    Im ersten Query selektierst Du jeweils die Artikel und das zugehörige höchste Datum und gibst das Ganze in eine Zwischen-Datei aus.

    Im zweiten Query verknüpfst Du diese Zwischen-Datei über Artikel-Nr. und Datum mit der Original-Datei und machst Deine Auswertungen.

    Wenn Du mit SQL arbeitest, kannst Du das Ganze in einem Schritt machen, da man anstatt Zwischen-Dateien im gleichen Statement Sub-Selects oder Common Table Expressions verwenden kann:

    PHP-Code:
    With x as (Select ArtikelNrMax(DatumMaxDatum
                  From KalkTable
                  Group By ArtikelNr
    )
    Select a.*
      
    from x join KalkTable a on     x.ArtikelNr a.ArtikelNr 
                                 
    and MaxDatum a.Datum
    oder

    PHP-Code:
    Select a.*
       
    from KalkTable join (Select ArtikelNrMax(Datum) as MaxDatum
                              from KalkTable
                              Group By ArtikelNr
    ) as x
                            on     a
    .ArtikelNr x.ArtikelNr
                               
    and MaxDatum a.Datum
    Soll das Ganze doch mit Query/400 verarbeitet werden, kannst Du aus den obigen Select-Statements Views (Create View MyView as (Select ....)) generieren und diese dann wie physische Dateien in Query verwenden.

    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

  3. #3
    Registriert seit
    Jul 2001
    Beiträge
    38
    Danke für die schnelle Antwort.
    Das mit der Zwischendatei hatte ich auch schon probiert. Ich möchte aber das Datum und den Betrag mit ausgegeben haben. Diese kommen aber bei Ausgabeform Summenübersicht nur, wenn ich sie als Gruppenwechselstufe definiere. Dies bewirkt dann aber wieder, das alle Zeilen kommen.

    Mfg W. Wagner

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    PHP-Code:
    Danke für die schnelle Antwort.
    Das mit der Zwischendatei hatte ich auch schon probiertIch möchte aber das Datum und den Betrag mit ausgegeben habenDiese kommen aber bei Ausgabeform Summenübersicht nurwenn ich sie als Gruppenwechselstufe definiereDies bewirkt dann aber wiederdas alle Zeilen kommen
    Deshalb brauchst Du ja das 2. Query!
    Im ersten Query werden nur die ArtikelNr und das höchste Datum ausgegeben als Summenübersicht ausgegeben.
    Im zweiten Query wird diese Zwischen-Datei mit der Original-Datei über ArtikelNr und Datum (in Zwischen-Datei steht ja nur das höchste Datum) verknüpft. Damit hast Du den kompletten Datensatz zur Verfügung und kannst den Betrag und was Du sonst noch aus dem Satz brauchst auswählen.

    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

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Danke für die schnelle Antwort.
    Das mit der Zwischendatei hatte ich auch schon probiert. Ich möchte aber das Datum und den Betrag mit ausgegeben haben. Diese kommen aber bei Ausgabeform Summenübersicht nur, wenn ich sie als Gruppenwechselstufe definiere. Dies bewirkt dann aber wieder, das alle Zeilen kommen.
    Deshalb brauchst Du ja das 2. Query!
    Im ersten Query werden nur die ArtikelNr und das höchste Datum ausgegeben als Summenübersicht ausgegeben.
    Im zweiten Query wird diese Zwischen-Datei mit der Original-Datei über ArtikelNr und Datum (in Zwischen-Datei steht ja nur das höchste Datum) verknüpft. Damit hast Du den kompletten Datensatz zur Verfügung und kannst den Betrag und was Du sonst noch aus dem Satz brauchst auswählen.

    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

Similar Threads

  1. Wert aus CSV Datei
    By mk in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 21-12-06, 08:56
  2. Können CLLE Module selbst einen Wert halten bzw. zurückgeben?
    By JonnyRico in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 25-04-06, 10:16
  3. Numerischen Wert aufrunden
    By harkne in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 30-03-06, 12:25
  4. Query - Text in Wert umwandeln??
    By Nickelär in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 02-12-05, 10:18
  5. Antworten: 3
    Letzter Beitrag: 03-02-05, 14:17

Berechtigungen

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