Seleccione el número de fila en postgres

102

Cómo seleccionar el número de fila en postgres.

Probé esto:

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

y obtuve este error:

ERROR: error de sintaxis en o cerca de "terminado"
LÍNEA 1: seleccione row_number () sobre (ORDER BY cgcode_odc_mapping_id) como

He revisado estas páginas: ¿Cómo mostrar los números de fila en la consulta de PostgreSQL?


Esta es mi consulta:

 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 

este es el error:

ERROR: error de sintaxis en o cerca de "sobre" LÍNEA 1: seleccione número_fila () sobre (ORDEN POR cgcode_odc_mapping_id) como

Disidente
fuente
3
Not Workingno nos dice nada en lo que podamos ayudar. Por favor, ¿podría darnos mensajes de error y / o cualquier otra información relevante? Además, especifique la versión de PostgreSQL que está utilizando.
MatBailie
1
Supongo que no funciona porque está intentando usar funciones de ventana en una versión anterior de PostgreSQL que no las admite.
Craig Ringer
2
No hay PostgreSQL versión 1.8.4.
kgrittn
1
select version()
Publique

Respuestas:

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

Aquí está la sección relevante en los documentos.

PD: Esto, de hecho, coincide completamente con la respuesta de la pregunta a la que se hace referencia.

Vyegorov
fuente
18
También debe especificar un orden en OVERla cláusula: OVER (ORDER BY id). De lo contrario, el pedido no está garantizado.
AlexM
3
@pumbo Appears row_number () devuelve "el número de fila del conjunto de resultados" (es decir, siempre 1 2 3 4 ... si lo especifica over ()); sin embargo, si tiene una consulta externa, reorganice el orden de resultados, por supuesto, ref: stackoverflow.com/a / 3397149/32453 comentarios
rogerdpack