Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

select statement max row

Dieses Thema im Forum "Oracle" wurde erstellt von joker, 5 Oktober 2016.

  1. joker

    joker Neuer Benutzer

    Hallo,
    ich versuche folgendes Problem zu lösen. Eine Archiv-Tabelle:
    ID NUMBER CODE
    123 1-1111 b
    125 1-1111 a
    34 1-1111 a
    124 2-1234 d
    234 2-1234 c
    4345 2-1234 c
    156 2-1234 c
    42 3-1113 i
    356 4-1134 a

    nun benötige ich alle NUMBERs bei denen es zwischen der höchsten und zweit höchsten eine Änderung bei CODE gab. Sollte die Änderung weiter zurück liegen brauche ich sie nicht! Also sollte von dem Auszug aus der Archiv-Tabelle nur 1-1111 selektiert werden.
    Irgendwie in der Art:

    select number
    from Archiv
    where code (max(id)) <> code (max(id))-1

    wobei -1 nicht korrekt ist.

    Hat jemand einen Tipp zur Lösung meines Problems?
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Code:
    test=*# select * from joker;
      id  | number | code
    ------+--------+------
      123 | 1-1111 | b
      125 | 1-1111 | a
      34 | 1-1111 | a
      124 | 2-1234 | d
      234 | 2-1234 | c
     4345 | 2-1234 | c
      156 | 2-1234 | c
      42 | 3-1113 | i
      356 | 4-1134 | a
    (9 Zeilen)
    
    
    test=*# select number, id, code, change from (select number, id, code, case when code != lag(code) over (partition by number order by id desc) then true else false end as change, row_number() over (partition by number order by id desc) from joker order by number, id) foo where change and row_number = 2;
     number | id  | code | change
    --------+-----+------+--------
     1-1111 | 123 | b  | t
    (1 Zeile)
    
    
    
    
    PostgreSQL, sollte in Oraggle aber auch so gehen.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden