2

我实际上正在运行 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

我想创建一个看起来像这样的视图:

  ID     CODE      POSITION
  01     COM002    1
  02     COM002    2
  01     COM003    1

顺序并不重要,只要每个代码有一个唯一的位置即可。

4

2 回答 2

1
SELECT ID, code, ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY CODE)
FROM Positiontest 
于 2012-12-12T16:45:20.077 回答
1

你想要的row_number()功能:

select pt.*,
       row_number() over (partition by code order by code) as Position
from PositionTest pt
于 2012-12-12T16:45:46.183 回答