Estoy tratando de crear una selección para asignar a una variable un número correlativo a las filas, pero mediante un campo de identificación común, no un número correlativo para todos los resultados de búsqueda.

Ejemplo para la tabla ORDER:

order_id   product_name
-----------------------
007        bicicle
007        bike 
007        car
008        car
008        ship
009        airplane
009        rocket
009        bicicle

¿lo que necesito?

Necesito agregar un número correlativo en la primera columna por order_id, como

row_number  order_id   product_name
-----------------------------------
1           007        bicicle
2           007        bike 
3           007        car
1           008        car
2           008        ship
1           009        airplane
2           009        rocket
3           009        bicicle

He creado esta selección, pero hay algún error:

SELECT
(SELECT ROW_NUMBER() OVER (order by ORDER_ID) AS ROW_NUMBER, 
 ORDER_ID, 
 PRODUCT_NAME

FROM ORDER

¿Cómo puedo arreglarlo?

0
Oscarcopi 18 dic. 2019 a las 20:11

2 respuestas

Tiene un paréntesis adicional y seleccione allí. Esto debería funcionar

SELECT ROW_NUMBER() OVER (order by ORDER_ID) AS ROW_NUMBER, 
       ORDER_ID, 
       PRODUCT_NAME
FROM ORDER

Editado sobre el nombre de la tabla ... No debe usar palabras reservadas como nombres de tabla. Pero si tiene que hacerlo, tal vez haga algo como esto

FROM [ORDER]

1
Alex 18 dic. 2019 a las 18:50

- ORDEN NOMBRADO DE LA MESA DE CREACIÓN

create table "order"
(
  order_id integer,
  product_name varchar2(50 char)
);

- INSERTAR DECLARACIONES--

 insert into "order" values(007,'bicycle');
 insert into "order" values(007,'bike');
 insert into "order" values(007,'car');
 insert into "order" values(008,'car');
 insert into "order" values(008,'ship');
 insert into "order" values(009,'airplane');
 insert into "order" values(009,'rocket');
 insert into "order" values(009,'bicycle');

--CONSULTA--

SELECT 
RANK() OVER ( PARTITION BY order_id ORDER BY PRODUCT_NAME ASC ) AS "Row_Number",
ORDER_ID, 
PRODUCT_NAME     
FROM "order"

--CONJUNTO RESULTANTE--

Row_Number  ORDER_ID    PRODUCT_NAME
1   7   bicycle
2   7   bike
3   7   car
1   8   car
2   8   ship
1   9   airplane
2   9   bicycle
3   9   rocket
0
Novice_Techie 18 dic. 2019 a las 18:05