select statement max row

joker

Neuer Benutzer
Beiträge
1
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?
 
Werbung:
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.
 
Zurück
Oben