SQL:创建一个基于日期创建位置的视图

时间:2012-12-12 16:40:13

标签: sql views

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

订单并不重要,只要有 是每个代码的唯一位置。

2 个答案:

答案 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