[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jan 2007
    Beiträge
    189
    Sie können mal so versuchen:
    Code:
    select Lagerort, Artikel, trim(char(Datum)) || trim(char(Zeit)) || trim(char(Suffix))
    where Lagerort = 'LO' and Datum between 20080901 and 20080930
    order by Lagerort, Artikel desc
    fetch first row only

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.789
    @kitvb1
    Tut mir Leid, aber das ist sowas von falsch:
    Sortierung des Begriffes "trim(..." fehlt, da ja hier das letzte ermittelt werden soll und nicht der letzte Artikel.
    Ausserdem werden durch char(Datum) und char(Zeit) Vornullen entfernt (siehe auch oben), was zur falschen Sortierung führt.
    Mein Vorschlag war ja DIGITS zu nehmen und TRIM zu entfernen:

    select Lagerort, Artikel, max(digits(Datum) || digits(Zeit) || char(Suffix))
    where Lagerort = 'LO' and Datum between 20080901 and 20080930
    Group by Lagerort, 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

  3. #3
    Registriert seit
    Nov 2003
    Beiträge
    2.427
    Anderer Vorschlag:
    Code:
    SELECT   *                                  
    FROM     DATTIMP                            
    WHERE   (LAGERORT,ARTIKEL,DATUM,ZEIT) IN (  
    SELECT   LAGERORT,ARTIKEL,DATUM,MAX(ZEIT)   
    FROM     DATTIMP                            
    WHERE   (LAGERORT,ARTIKEL,DATUM) IN (       
    SELECT   LAGERORT,ARTIKEL,MAX(DATUM)        
    FROM     DATTIMP                            
    WHERE    LAGERORT='LO'                      
    AND      DATUM BETWEEN 20080901 AND 20080930
    GROUP BY LAGERORT,ARTIKEL)                  
    GROUP BY LAGERORT,ARTIKEL,DATUM)            
    ORDER BY LAGERORT,ARTIKEL,DATUM,ZEIT

  4. #4
    Registriert seit
    Jan 2007
    Beiträge
    189
    @Fuerchau,

    Tjcha, da haben Sie vollkommen recht, weiss ich auch nicht ich da gedacht habe. Senioren moment?

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.789
    Da fragt sich, wer denn hier der Senior ist .
    Funktionierts denn jetzt endlich ?
    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

  6. #6
    Registriert seit
    Jan 2007
    Beiträge
    189
    Was ich als zweckpunkt gewollt habe, ist die möglichkeit besteht um es
    ohne max(...)
    mit nutzung von
    order by... /desc
    fetch first/last
    auch schaffen kann.
    Dazu wollte ich auch fragen, welche läuft schneller? Mit max(...) oder fetch first?

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.789
    Wenn entsprechende Zugriffswege vorhanden sind, ist fetch first schneller.
    Das setzt aber auch einen DESC-Key voraus, denn ich weiß nicht, ob der Optimizer ggf. auch rückwärts optimiert.

    Bei zusammengesetzten Feldern erübrigt sich ja eigentlich die Frage .
    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
    Aug 2001
    Beiträge
    2.943
    Hey Kit,

    Was ich als zweckpunkt gewollt habe, ist die möglichkeit besteht um es
    ohne max(...)
    mit nutzung von
    order by... /desc
    fetch first/last
    auch schaffen kann.
    Dazu wollte ich auch fragen, welche läuft schneller? Mit max(...) oder fetch first?
    Werden die Abfragen mit den SQE ausgeführt und wird jeweils nur der Maximal-Wert selektiert, wird der gleiche Zugriffsplan verwendet, d.h. Zeitabweichungen hängen lediglich von der Auslastung auf der Maschine ab.

    Die folgenden Abfragen werden original gleich ausgeführt. Es existiert ein Zugriffsweg nach FldX.

    PHP-Code:
    Select Max(Fldx)
    From MyTable
    PHP-Code:
    Select FldX
    from MyTable
    Order By FldX Desc
    Fetch First Row Only


    Das setzt aber auch einen DESC-Key voraus, denn ich weiß nicht, ob der Optimizer ggf. auch rückwärts optimiert.
    Die CQE braucht eine absteigend sortierten Zugriffspfad (in beiden Fällen!). SQE kann eine Zugriffsweg auch rückwärts verarbeiten.

    Wird die Abfrage mit der CQE ohne entsprechenden Zugriffsweg verarbeitet, ist die Variante mit der Aggregat-Funktion (MAX) wesentlich schneller als die Variante mit dem Fetch! In der Fetch Variante wird eine temporäre Datei gebildet während bei der anderen Variante gruppiert werden kann.

    Bei entsprechend sortiertem Zugriffsweg wird dieser bei der Fetch-Variante verwendet, während im anderen Fall weiterhin ein Table Scan mit Grouping verwendet wird.

    Bei zusammengesetzten Feldern erübrigt sich ja eigentlich die Frage
    Vor 6.1 ja, ab 6.1 können auch Indices über zusammengesetzte Felder oder durch skalare Funktionen veränderte Felder gebildet werden. Diese Indices können dann auch vom Optimizer verwendet werden.

    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

  9. #9
    Registriert seit
    Nov 2003
    Beiträge
    2.427
    Liefert FETCH FIRST nicht nur einen einzigen Datensatz je Abfrage zurück? Du brauchst doch aber mehrere Datensätze, für jeden Artikel je Lagerort einen?

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.789
    Ich glaub jetzt sind wir weit am Thema vorbei.
    Fetch first löst natürlich nicht obiges ursprüngliches Problem.
    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

Similar Threads

  1. SQL Datum
    By steven_r in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 04-12-06, 13:16
  2. SQL: Aus mehreren Feldern ein Datum erkennen
    By I0N in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 21-11-06, 13:44
  3. SQL DATUM
    By steven_r in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 20-11-06, 19:37
  4. Aktuelle Datum und Zeit bei Free-Form
    By lossin in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 08-02-06, 15:09
  5. SQL Datum aus Kalenderwoche?
    By miro in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 11-09-05, 12:11

Berechtigungen

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