Announcement

Collapse
No announcement yet.

Update einer Tabelle mit ROW_NUMBER zwecks Unternummerierung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Update einer Tabelle mit ROW_NUMBER zwecks Unternummerierung

    Hallo zusammen,
    ich möchte ein Feld einer ORA-Tabelle mit einer Art Unternummerierung versehen.
    Dazu habe ich schon folgendes Select-Statment aufgebaut, was wunderbar funktioniert:

    Code:
    SELECT A.LID, A.STR_CFNR, B.REF_ID_ORT, ROW_NUMBER() OVER (PARTITION BY A.LID ORDER BY B.REF_ID_ORT DESC) AS RANG
               FROM BTD_ORTE A
               INNER JOIN BTD_CAMPINGPLAETZE B 
               ON A.LID = B.REF_ID_ORT
               ORDER BY A.LID
    Nun möchte ich das Feld STR_CFUNR der Tabelle BTD_CAMPINGPLAETZE mit RANG updaten.
    Dies soll aber nur dann passieren wenn es mehr als 1 Campingplatz gibt, z.B. so:

    Code:
    LID	STR_CFNR		REF_ID_ORT	RANG	STR_CFUNR
    1	1010		1		1	1
    2	1010		1		2	2
    3	1105		3		1	-
    4	1106		4		1	1
    5	1106		4		2	2
    6	1106		4		3	3
    7	1110		7		1	-
    Gruß Hani

  • #2
    Hallo,

    wenn ich jetzt davon ausgehe, dass das mehrfache Auftreten der gleichen Nummer in str_cfnr das Kriterium ist, dann geht es so:
    Code:
    UPDATE t4
    SET str_cfunr=rang
    WHERE exists (SELECT * FROM (SELECT lid
                                       ,str_cfunr
                                       ,rang
                                       ,COUNT(*) OVER (PARTITION BY str_cfnr) anz
                                        FROM t4) t5
                   WHERE t4.lid=t5.lid
                     AND t5.anz>1)
    ;
    Gruß

    Ralf

    Comment


    • #3
      Oder auch:

      UPDATE t4
      SET str_cfunr=rang
      WHERE EXISTS (SELECT t5.str_cfnr
      FROM t4 t5
      WHERE t4.str_cfnr=t5.str_cfnr
      GROUP BY t5.str_cfnr
      HAVING COUNT(*)>1)
      ;
      Gruß

      Ralf

      Comment

      Working...
      X