2

私は実際にoracleを実行していますが、例をsqlfiddleにコピーしたときに、mysqlではなくoracleを選択した場合、実行されません。おそらく、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');

これにより、positiontestテーブルが得られます。

  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

コードごとに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 に答える