Sql 任何ID(或任何其他类型的解决方案)的行号
我试图创建一个select,为一个变量分配一个与行相关的编号,但是通过一个公共id字段,而不是所有搜索结果的相关编号 订单表的示例: 订单\标识产品\名称 ------------ 007双车 007自行车 007汽车 008车 008船 009飞机 009火箭 009双锥 我需要什么 我需要根据订单号在第一列添加一个相关编号,如下所示 行号订单id产品名称 ------------------ 1007双车 2007自行车 3007辆汽车 1008辆车 2008船 1009飞机 2009火箭 3009双腔 我已创建此选择,但存在任何错误: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
(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`-但是如果您找到一个不同的表名会更好