我实际上正在运行oracle,但是当我将我的示例复制到sqlfiddle时,如果我选择oracle而不是mysql,它就不会运行,也许oracle的小提琴版本与我的不同。 http://www.sqlfiddle.com/#!2/44933/1
CREATE TABLE Positiontest(
ID VARCHAR(20),
code CHAR(06),
registrationdate DATE,
PRIMARY KEY(ID,code)
);
INSERT INTO Positiontest VALUES('01','COM002','2012-12-11');
INSERT INTO Positiontest VALUES('02','COM002','2012-12-12');
INSERT INTO Positiontest VALUES('01','COM003','2012-12-11');
这给了我位置测试表:
ID CODE REGISTRATIONDATE
01 COM002 2012-12-11
02 COM002 2012-12-12
01 COM003 2012-12-11
我想创建一个类似于以下内容的视图:
ID CODE POSITION
01 COM002 1
02 COM002 2
01 COM003 1
订单并不重要,只要有 是每个代码的唯一位置。
答案 0 :(得分:1)
SELECT ID, code, ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY CODE)
FROM Positiontest
答案 1 :(得分:1)
您需要row_number()
功能:
select pt.*,
row_number() over (partition by code order by code) as Position
from PositionTest pt