[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2001
    Beiträge
    109

    SQL - Update mit neuer Sequenznummer ROW_NUMBER()

    Hallo zusammen

    Ich habe die Anforderung, basierend auf einem bestimmten Kriterium eine Datei neu zu sortieren und neue Sequenznummern zuzuteilen.

    Dies geht z.B. mit folgendem SQL wenn ich ein neues File erstelle, geordnet nach MELDID:

    Select Row_Number() Over(ORDER BY Meldid desc ) as SEQNU, MELDID
    From lib/file

    Kann mir jemand sagen, wie der SQL-Befehl aussehen müsste, wenn ich ein bestehendes File enthaltend das Feld SEQNU updaten kann.

    Gibt es ev. die Möglichkeit dem Befehl "mitzuteilen", ab einer bestimmten SEQNU (z.B. 50000) zu nummerieren.
    Kann leider auch mit Google nichts Hilfreiches dazu finden.

    Vielen Dank schon mal für eure Antworten
    Grüsse Roman

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Row_Number() ist ja nur eine temporäre Nummer.
    Du kannst per "create sequence" einen "Generator" mit einem Startwert erstellen und per "next value for mysequence" den Wert hochzählen lassen.
    Allerdings gibts beim Update keinen Order by, so dass die Zuweisung der Nummer vom gewählten Index der "Update ... Where"-Bedingung abhängt.
    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
    Mar 2002
    Beiträge
    5.365
    ... selbst wenn das mit dem Index klappen würde, könnte das bei jeder Asuführung wieder anders sein. Was immer geht, ist zweistufig: 1. erstellen Zwischendatei, 2. update aus der Zwischendatei.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    Registriert seit
    Jan 2001
    Beiträge
    109
    Besten Dank Baldur (natürlich auch BenderD)

    Der Hinweis von Baldur hat geholfen.
    Hier noch zur Ergänzung meine verwendete Befehlsfolge.
    Das zu Grunde liegende File habe ich vorgängig bereits in die benötigte REihenfolge gebracht:

    create sequence lib/reihe start with 73082 increment by 1
    Sequenz REIHE wurde in LIB erstellt.

    update qtemp/gcpca set SEQNU = NEXT VALUE FOR reihe
    44 Zeilen in GCPCA in QTEMP aktualisiert.

    anschliessend Sequence wieder löschen:
    drop sequence LIB/Reihe
    Löschen von REIHE in LIB beendet.

    Grüsse Roman

Similar Threads

  1. QNTC ist leer auf neuer AS400 (V7R1)
    By mott in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 20-11-13, 14:08
  2. CRC wird neuer FRIDA-Partner
    By RM Haaßengier in forum Archiv NEWSblibs
    Antworten: 0
    Letzter Beitrag: 09-10-01, 08:07
  3. Neuer Vorstand Finanzen bei BRAIN
    By W.Steiner in forum Archiv NEWSblibs
    Antworten: 0
    Letzter Beitrag: 11-09-01, 12:04
  4. Neuer Backup Server von ProLogiX
    By W.Steiner in forum Archiv NEWSblibs
    Antworten: 0
    Letzter Beitrag: 24-08-01, 17:04
  5. Neuer Distributor für Symtrax
    By W.Steiner in forum Archiv NEWSblibs
    Antworten: 0
    Letzter Beitrag: 14-03-01, 09:42

Berechtigungen

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