Wählen Sie die Zeilennummer in Postgres

102

So wählen Sie die Zeilennummer in Postgres aus.

Ich habe es versucht:

select
    row_number() over (ORDER BY cgcode_odc_mapping_id)as rownum,
    cgcode_odc_mapping_id
  from access_odc.access_odc_mapping_tb
  order by cgcode_odc_mapping_id

und habe diesen Fehler bekommen:

FEHLER: Syntaxfehler bei oder nahe "über"
Zeile 1: Wählen Sie row_number () über (ORDER BY cgcode_odc_mapping_id) als

Ich habe diese Seiten überprüft: Wie werden Zeilennummern in der PostgreSQL-Abfrage angezeigt?


Das ist meine Frage:

 select row_number() over (ORDER BY cgcode_odc_mapping_id)as rownum,cgcode_odc_mapping_id from access_odc.access_odc_mapping_tb order by cgcode_odc_mapping_id 

Das ist der Fehler:

FEHLER: Syntaxfehler bei oder nahe "über" Zeile 1: Wählen Sie row_number () über (ORDER BY cgcode_odc_mapping_id) als

Einzelgänger
quelle
3
Not Workingsagt uns nichts, bei dem wir helfen können. Bitte geben Sie Fehlermeldungen und / oder andere relevante Informationen an. Geben Sie außerdem die von Ihnen verwendete Version von PostgreSQL an.
MatBailie
1
Vermutlich funktioniert es nicht, weil Sie versuchen, Fensterfunktionen in einer alten Version von PostgreSQL zu verwenden, die diese nicht unterstützt.
Craig Ringer
2
Es gibt keine PostgreSQL-Version 1.8.4.
kgrittn
1
Bitte posten Sie die Ausgabe von select version()- es gibt keine Version 1.8 (und gab es nie)
a_horse_with_no_name

Antworten:

178
SELECT tab.*,
    row_number() OVER () as rnum
  FROM tab;

Hier ist der relevante Abschnitt in den Dokumenten.

PS Dies stimmt in der Tat vollständig mit der Antwort in der angegebenen Frage überein.

vyegorov
quelle
18
Sie sollten auch eine Reihenfolge in OVERKlausel angeben : OVER (ORDER BY id). Andernfalls kann die Bestellung nicht garantiert werden.
AlexM
3
@pumbo Erscheint row_number () gibt "die Zeilennummer der Ergebnismenge" zurück (dh immer 1 2 3 4 ... wenn Sie angeben over ()). Wenn Sie jedoch eine äußere Abfrage haben, ordnen Sie die Ergebnisreihenfolge neu an. Natürlich ref: stackoverflow.com/a / 3397149/32453 Kommentare
Rogerdpack