[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2005
    Beiträge
    30

    Question Nummerierung innerhalb einer Gruppierung

    Dieses von Frau B.Hauser entlehnte und angepasste, nachstehende Beispiel nummeriert die Zeilen der Ergebnismenge.

    Nun soll ein SQL erstellt werden, das je gleicher Gruppe (bestehend aus den ersten 10 Stellen von "Text") eine neue Nummerierung von 1 bis n erfolgt.
    Ich bin leider nicht in der Lage, eine Lösung zu finden.
    Vielleicht weiß jemand von Ihnen Rat.

    Vielen Dank im Voraus.

    Burkhard

    with x as (select digits(TLfirm) concat ' '
    concat digits(TLTOUR) concat ' '
    concat digits(LRTZEI) as Text
    from VDBDTAPKFT/LRHSTA02, VDBDTAPKFT/TOULZU02
    where TLFIRM = LRFIRM and TLSTOR = LRSTOR and
    TLABTL = LRABTL and TLLIRH = LRLIRH and TLFIRM = 1
    group by TLFIRM, TLTOUR, LRTZEI),
    y as (select substr(Text, 1, 15) as yText,
    substr(Text, 1, 15) as yKey from x),
    z as (select Text as zText,
    substr(Text, 1, 15) as zkey from x)
    select yText, count(ykey) as Nummer
    from y join z on yKey >= zKey
    group by yText
    ____________________________

    Ergebnis ist:
    YTEXT NUMMER
    001 00101 01700 1
    001 00110 00830 2
    001 00110 01130 3
    001 00110 01400 4
    001 00120 00700 5
    001 00120 00900 6
    001 00120 01300 7
    001 00130 00900 8
    001 00130 01200 9

    Ergebnis soll:
    YTEXT NUMMER
    001 00101 01700 1
    001 00110 00830 1
    001 00110 01130 2
    001 00110 01400 3
    001 00120 00700 1
    001 00120 00900 2
    001 00120 01300 3
    001 00130 00900 1
    001 00130 01200 2

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

    auf welchem Release arbeitest Du?
    Falls Du schon auf Release V5R4 bist, kannst Du das Ganze viel einfacher haben.

    Mit Release V5R4 wurden OLAP-Ranking Funktionen eingeführt, mit deren Hilfe SQL-Statements ganz einfach durchnummeriert werden können.

    Im folgenden Beispiel, wird eine laufende Nr. nach TotalKunde absteigend ermittelt und angezeigt. Obwohl die laufende Nr. nach TotalKunde vergeben wurde kann das Ergebnis nach KundeNr ausgegeben werden.
    PHP-Code:
    select Row_Number() over(Order By TotalKunde DescRowNbrKundeNrTotalKunde 
       from Summe
       where Jahr 
    2005
       order By KundeNr

    In dem vorherigen Beispiel wurde nur das Jahr 2005 aufgelistet. Jetzt sollen alle Jahre aufgelistet werden und die Nummerierung pro Jahr erfolgen. In diesem Fall würde das SQL-Statement wie folgt aussehen:
    PHP-Code:
    select Row_Number() over(Partition By Jahr Order By TotalKunde DescRowNbr
           
    JahrKundeNrTotalKunde 
       from Summe
       order By Jahr
    KundeNr
    In Deinem Beispiel könnte das irgendwie so aussehen:
    PHP-Code:
    with x as (select substr(MyText110) as SortMyText
                  from Text
    )
    select RowNumber() over(Partition by Sort Order by MyText) as RowNbr
             
    x.*from x
    Für vor Release V5R4 fällt mir zumindest im Moment keine einfache Lösung ein.

    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
    Jan 2005
    Beiträge
    30
    Derzeit sind wir noch auf V5R3M7 aber bald ....

    Vielen Dank für Ihr Engagenment.

    BUrkhard

Similar Threads

  1. Records innerhalb Tabelle duplizieren
    By mama in forum IBM i Hauptforum
    Antworten: 12
    Letzter Beitrag: 27-10-06, 08:14
  2. Color ändern innerhalb eines Textfeldes
    By Karscho in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 26-10-06, 09:53
  3. Excel Sortierung und Gruppierung
    By DieSchatten in forum NEWSboard Windows
    Antworten: 8
    Letzter Beitrag: 08-03-06, 12:20
  4. Courserposition innerhalb einer Subfile
    By FlexFux in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 23-03-05, 14:01
  5. Info über benutzte Tabellen innerhalb eines PGM
    By KB in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 02-08-01, 09:46

Berechtigungen

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