Reihenfolge in Spalte speichern

Hallo

ich habe eine tabelle mit mehreren Spalten, eine spalte lassen ich nach der größe sortieren, diese sortierung würde ich gerne durchnummerieren und in einer neuen spalte speichern. Zeilen die in final1990 keinen Wert haben sollen bei der Sortierung keinen wert erhalten.

final1990|sortierung
0 |5
10 |4
28 |3
39 |2
1000 |1

schonmal vielen dank für die hilfe

alex

Hab ich Dich richtig verstanden?

test=# select * from alex order by a;
 a | b
---+---
 1 | 3
 2 | 5
 3 |
 4 | 7
 5 | 1
 6 |
 7 | 2
(7 rows)

test=*# select a, b, row_number() over (order by b) from alex where b is not null;
 a | b | row_number
---+---+------------
 5 | 1 |          1
 7 | 2 |          2
 1 | 3 |          3
 2 | 5 |          4
 4 | 7 |          5
(5 rows)

test=*# alter table alex add column sort_order int;
ALTER TABLE
test=*# update alex set sort_order = row_number from (select a, b, row_number() over (order by b) from alex where b is not null) foo where alex.a=foo.a;
UPDATE 5
test=*# select * from alex;
 a | b | sort_order
---+---+------------
 3 |   |
 6 |   |
 5 | 1 |          1
 7 | 2 |          2
 1 | 3 |          3
 2 | 5 |          4
 4 | 7 |          5
(7 rows)

Andreas

Hallo das sieht schon so aus als geht es in die richtige richtung, habe das mal an meine tabellen und spalten angepasst
select n_final1990_1000, row_number() over (order by n_final1990_1000) from lut2_gmi1990 where n_final1990_1000 is not null;
aber ich bekomme für diese zeile eine fehlermeldung
ERROR: syntax error at or near “over”
LINE 1: select n_final1990_1000, row_number() over (order by n_final…

woran liegt das???

Du verwendest nicht die aktuelle PostgreSQL version (8.4).

das stimmt ich benutze die
PostgreSQL 8.3.11
gibt es eine möglichkeit die abfrage auch in dieser version umzusetzen??

Kurze Antwort: Nein.
Lange Antwort: eine Funktion schreiben.
schnellster Weg: Update auf 8.4

Andreas

Danke für die Hilfen