1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Rang ermitteln

Dieses Thema im Forum "DB2" wurde erstellt von nudie, 21 Juli 2016.

  1. nudie

    nudie Neuer Benutzer

    Hallo,

    ich habe folgendes Problem udn hoffe dass ich hier Hilfe finde.

    Ich möchte für aufeinander folgende ID´s in einer Tabelle, einen gemeinsamen Rang verpassen. Diesen Rang möchte ich später als Primary Key einsetzen, um Daten zu verküpfen. Der Zähler soll +1 sein. Hier ein einfaches Beispiel:

    id rank
    747 1
    748 1
    895 2
    896 2
    897 2
    900 3
    901 3
    902 3

    Da ID 747 und 748 auf einander folgen mit dem Zähler "+1" , sollen diese zu einem Rang ausgegeben werden.

    Wie würde das Statement hierfür aussehen? Angenommen, Tabellennaame ist "test".
     
  2. ukulele

    ukulele Datenbank-Guru

    Das ist in jedem Fall nicht ganz einfach aber es gibt Wege:
    Code:
    WITH t(id,zeile,[rank]) AS (
       SELECT   min(id),
           1,
           1
       FROM   test
       UNION ALL
       SELECT   u.id,
           cast(u.zeile AS INT),
           ( CASE WHEN t.id + 1 = u.id THEN t.[rank] ELSE t.[rank] + 1 END )
       FROM   t
       INNER JOIN (   SELECT   ROW_NUMBER() OVER (ORDER BY id) AS zeile,
                   id
               FROM   test ) u
       ON     t.zeile + 1 = u.zeile
       )
    SELECT   t.id,
         t.[rank]
    FROM   t
    OPTION (MAXRECURSION 10000)
    Du kannst aber in keinem Fall das Ergebnis [rank] als PK verwenden denn der Rang ist ja nicht eindeutig. Brauchst du vielleicht eher eine Zwischentabelle für eine n:m Beziehung?
     
  3. nudie

    nudie Neuer Benutzer

    Danke vorab für deine Zusammenstellung des Skriptes. Vielleicht habe ich mich nicht klar ausgedrückt, aber ich kann es als Key verwenden, da für mich ein Key aus mehreren Blöcken besteht.

    Key=eine Belegnummer
    Mehrere Datensätze mit dem selben Key, gehören zusammen, da selber Beleg.
     
Die Seite wird geladen...
Ähnliche Themen
  1. jessi
    Antworten:
    1
    Aufrufe:
    1.185

Diese Seite empfehlen