-
laufende Nummer in DB mit SQL aktualisieren
Hallo,
ich möchte gerne in eine DB eine laufende Nr. mit SQL einfügen.
Mit "select ROW_Number() over(partition by myfeld) from mylib.mydb" funtkioniert das ja für die Anzeige.
Gibts da auch was für UPDATE?
Konkret erstelle ich in einer DB Sätze (für mehrere Firmen), nach einem zweiten Aufbau können Sätze hinzukommen oder entfernt werden.
Danach sollte die Laufende Nr. wieder aktualisert werden, mit der Bedingung einer Gruppierung auf Firmenebene.
D.H. ich möchte einfach pro Firma wieder eine aufsteigene Laufende Nr. beginnend bei 1 haben.
Gibt es da eine Möglichkeit?
Vielen Dank!
XMan
-
Stichwort "Identity"-Spalte.
Die kann automatisch eine Nummer vergeben. Hierzu wird eine sog. "Sequence" automatisch verwendet.
Alternativ kannst du das auch selber machen:
create sequence MySeq
insert into myfile (f1, SeqFld) values(xx, next value for MySeq)
-
Weder eine Identity Column, noch eine Sequence No berücksichtigen Gruppen-Wechsel.
Einen laufenden Zähler automatisch abhängig von einer Gruppierung zu generieren geht nur mit einem Before-Update Trigger.
Birgitta
-
Guten Morgen!
Danke für die Antworten!
Und wie sieht so ein Before-Update Trigger für einen frei definierten Gruppenwechsel aus wenn bereits Daten in der DB sind?
Ich habe leider noch nie etwas mit Triggern gemacht auf SQL.
Thx
-
Ein Updatetrigger hilft dir da wohl auch nicht, da dieser ja nur den aktuellen Satz betrachtet.
Hier kannst du nur selber eine Prozedur (egal ob embedded SQL oder SQL-Procedure) schreiben, die per Select die Daten nebst Schlüssel sammelt und dann den Update je Schlüssel mit der neuen Nummer durchführt.
Warum denn die Nummer immer neu vergeben?
Bei ggf. Millionen von Sätzen ist das ein zeitraubender Vorgang.
Sind Lücken denn relevant bzw. dürfen nicht vorkommen?
Du kannst dir doch eine Mandantentabelle (die gibts meist ja schon) mit einem Zähler erstellen, der bei jedem Insert (before-Insert-Trigger) die neue Nummer beschafft.
-
Danke für die Info!
Dann bleibt mir ein Nachlaufprogramm nicht erspart.
Grund hierfür ist das ich Daten für eine Behörde (Summendatei) aus zwei Umgebungen (Lohn & Gehalt) aufbauen muss.
In beiden Umgebungen Lohn & Gehalt gibt es teilweise gleiche Firmen mit Personensätzen.
z.B. Lohn hat Firma A, B, D und Gehalt hat Firma A, C, D, E
Die Behörde will aber nichts wissen von Lohn & Gehalt und somit pro Firma eine durchgehende Nummerierung der Personendaten haben.
Nun zu meinem Problem, wenn die Daten im Lohn aufgebaut wurden und dann die Gehaltsdaten einfließen könnte ich ja bei der höchsten lfd.Nr. vom Lohn fortsetzen. Aber wenn die Lohndaten nochmals aufgebaut werden (weil nachträgliche Korrektur) dann kann es sein das es mehr oder weniger Sätze gibt und somit die Nummerierung nicht mehr stimmt.
Das Spiel kann öfters vorkommen, somit muss ich am Ende über beide Umgebungen eine eindeutige Nummer für die Behörde erstellen.
Wäre halt schön gewesen wenn es hier eine einfache SQL Lösung gegeben hätte.
Danke dennoch für Euer bemühen!
-
... was in der Anzeige geht, kann man mit einem einfachen QMQRY in eine Ausgabedatei brettern, wo ist das Problem?
-
Zitat von BenderD
... was in der Anzeige geht, kann man mit einem einfachen QMQRY in eine Ausgabedatei brettern, wo ist das Problem?
Und wie geht das?
Thx
-
du packst dein SQL Statement in eine Textdatei, erstellst das QMQRY mit CRTQMQRY und führst es mit STRQMQRY aus, letzteres hat einen Parameter OUTPUT, der *outfile erlaubt.
D*B
-
Wenn du deine Daten für die Behörde aufbereitest musst du doch die Nummer nicht zurückschreiben, da sie sich doch sowieso jedesmal ändern kann.
Also mach einen SQL fertig (select blabla) und bette diesen in einen QMQRY ein (STRQM).
Per STRQMQRY kannst du dann eine Ausgabedatei erstellen.
Alternativ mache:
create table as (
select ....
) with data
Und bearbeite die Ausgabe dann z.B. per CPYFRMIMPF.
-
OK, werde ich mal versuchen ob das so klappt.
Danke!
Similar Threads
-
By Burgy Zapp in forum Archiv NEWSboard Events
Antworten: 0
Letzter Beitrag: 12-02-14, 18:34
-
By Burgy Zapp in forum Archiv NEWSblibs
Antworten: 0
Letzter Beitrag: 12-02-14, 18:34
-
By Markus Ralf in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 03-09-02, 12:20
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks