Sql 任何ID(或任何其他类型的解决方案)的行号

Sql 任何ID(或任何其他类型的解决方案)的行号,sql,row-number,Sql,Row Number,我试图创建一个select,为一个变量分配一个与行相关的编号,但是通过一个公共id字段,而不是所有搜索结果的相关编号 订单表的示例: 订单\标识产品\名称 ------------ 007双车 007自行车 007汽车 008车 008船 009飞机 009火箭 009双锥 我需要什么 我需要根据订单号在第一列添加一个相关编号,如下所示 行号订单id产品名称 ------------------ 1007双车 2007自行车 3007辆汽车 1008辆车 2008船 1009飞机 2009火箭

我试图创建一个select,为一个变量分配一个与行相关的编号,但是通过一个公共id字段,而不是所有搜索结果的相关编号

订单表的示例:

订单\标识产品\名称 ------------ 007双车 007自行车 007汽车 008车 008船 009飞机 009火箭 009双锥 我需要什么

我需要根据订单号在第一列添加一个相关编号,如下所示

行号订单id产品名称 ------------------ 1007双车 2007自行车 3007辆汽车 1008辆车 2008船 1009飞机 2009火箭 3009双腔 我已创建此选择,但存在任何错误:

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

FROM ORDER

如何修复它?

您有一个额外的括号,并在其中选择。这应该可以解决问题

SELECT ROW_NUMBER() OVER (order by ORDER_ID) AS ROW_NUMBER, 
       ORDER_ID, 
       PRODUCT_NAME
FROM ORDER
已编辑有关表名的信息。。。不应使用保留字作为表名。但是如果你必须的话,也许可以这样做

FROM [ORDER]


-创建名为ORDER的表-

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
order是一个保留关键字,您需要引用它:FROM order`-但是如果您找到一个不同的表名会更好