我实际上正在运行oracle,但是当我将示例复制到sqlfiddle时,如果我选择oracle而不是mysql,它就不会运行,也许oracle的fiddle版本与我的不同。 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
我想创建一个如下所示的 View :
ID CODE POSITION
01 COM002 1
02 COM002 2
01 COM003 1
顺序不重要,只要有 每个代码都有一个唯一位置。
最佳答案
您需要 row_number()
函数:
select pt.*,
row_number() over (partition by code order by code) as Position
from PositionTest pt
关于SQL:创建一个基于日期创建位置的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13844419/