Nummerierung von Ergebniszeilen
- Dieses Thema hat 4 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 18 Jahre vonMitglied.
- AuthorPosts
- 24. Juni 2004 um 15:10 Uhr #2409
Hallo,
ich suche gerade nach einer Möglichkeit, die Ergebniszeilen eines Selects mit laufenden Nummern zu versehen. Auf die Tabelle habe ich keinen Einfluss (kann also kein Feld dranhängen). Die Nummern sollen auch Ergebnis der SQL-Abfrage sein, da ich damit weiterarbeiten will (also kein Programm, QMF-Report o.ä.)
Beispiel:
SELECT lfdNr, A.* from TABELLE A WHERE … ORDER BY …
Ergebnis:
COL1, Feld1, Feld2, …
____ ____ _____
1 ‚A‘ ‚AA‘
2 ‚B‘ ‚BB‘
3 ..
4 ..Wer hat da eine Idee?? Geht z.B. ein Join über 2 Tabellen, wo nur Zeile A1 mit B1 und A2 mit B2 kombiniert werden?
Thx,
Alexander25. Juni 2004 um 6:27 Uhr #2892Du kannst dafür eine User-Defined-Function schreiben, die immer nur um eins hochzählt.
Möglichkeiten, sowas über einen Join zu realisieren, gibt es, aber das wird sehr schnell sehr inperformant. Hier eine Lösungsmöglichkeit, bei der die Tabelle mit sich selbst geJOINed wird:
SELECT COUNT(*) as laufendeNummer , A.col1 , A.col2 , … , A.coln
FROM tabelle A, tabelle B
WHERE A.(eindeutiger Schlüssel) >= B.(eindeutiger Schlüssel)
GROUP BY A.col1, A.col2, … , A.coln25. Juni 2004 um 7:14 Uhr #3244Hallo,
zumindest für die dezentralen Plattformen gab es sog. OLAP-Funktionen wie ROW_NUMBER() und RANK(), die diese Funktionalität anbieten.
Ein Beispiel aus der Doku für UDB V7:
Provide row numbers in the result of a query.
SELECT ROW_NUMBER() OVER (ORDER BY WORKDEPT, LASTNAME) AS NUMBER,
LASTNAME, SALARY
FROM EMPLOYEE
ORDER BY WORKDEPT, LASTNAMEGruss,
Alex6. Mai 2005 um 12:12 Uhr #3473hi,
keine ahnung, ob’s noch interessant ist, aber habe gerade eine lösung unter der nutzung von sequences gefunden.
hier das selbsterklärende beispiel:CREATE SEQUENCE LINECTR;
SELECT
NEXT VALUE FOR LINECTR,
CREATOR,
NAME
FROM
SYSIBM.SYSTABLES
WHERE
DBNAME = ‚…‘;DROP SEQUENCE LINECTR;
viele grüsse, rolf
2. Juni 2005 um 12:14 Uhr #3619Hallo Rolf,
heute (wieder) aktuell ;D ; ich würde Dich glatt "Gott" nennen aber leider haben wir V8 noch nicht im Einsatz :'(
ich werde es mir aber merken!
Grüsse
Alexander - AuthorPosts
You must be logged in to reply to this topic.