ROW_NUMBER 通过任何 ID(或任何其他类型的解决方案)

ROW_NUMBER by any ID (or any other kind of solution)

我正在尝试创建一个 select 来为变量分配行的相关编号,但通过公共 ID 字段,而不是所有搜索结果的相关编号。

订单示例 table:

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

我需要什么?

我需要在第一列添加一个相关数字 order_id,因为

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

我已经创建了这个 select,但是有任何错误:

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

FROM ORDER

我该如何解决?

你有一个额外的括号,there.This 中的 select 应该有效

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

编辑了 table 名称...您不应使用保留字作为 table 名称。但如果你必须这样做,也许可以做这样的事情

FROM [ORDER]

--创建 TABLE 命名顺序--

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

--插入语句--

 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');

--查询--

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

--结果集--

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