豚吐露@wiki

OracleのROWNUMみたいなことがしたい

最終更新:

ohden

- view
管理者のみ編集可

MSDE2000はSQL Server2000互換なので...ROWNUMに代わる関数は用意されていない。
※SQL Server2005からROW_NUMBERって関数を用意してくれてるらしい...

以下のようなtableとデータがあったとして...
CREATE TABLE T_TEST(
  id int PRIMARY KEY  NOT NULL,
  detail nvarchar(50),
  createdate datetime
);

INSERT INTO T_TEST VALUES(10001, 'TEST1', getdate());
INSERT INTO T_TEST VALUES(10002, 'TEST1', getdate());
INSERT INTO T_TEST VALUES(10003, 'TEST1', getdate());
INSERT INTO T_TEST VALUES(10004, 'TEST1', getdate());
INSERT INTO T_TEST VALUES(10005, 'TEST1', getdate());
INSERT INTO T_TEST VALUES(10006, 'TEST1', getdate());
INSERT INTO T_TEST VALUES(10007, 'TEST1', getdate());
INSERT INTO T_TEST VALUES(20001, 'TEST2', getdate());
INSERT INTO T_TEST VALUES(20002, 'TEST2', getdate());
INSERT INTO T_TEST VALUES(20003, 'TEST2', getdate());
INSERT INTO T_TEST VALUES(20004, 'TEST2', getdate());
INSERT INTO T_TEST VALUES(20005, 'TEST2', getdate());
INSERT INTO T_TEST VALUES(20006, 'TEST2', getdate());

って、やると、順番に番号がふられる。
ただし、WHEREで条件絞ったり、副問い合わせしたりしようとすると...とたんに難易度が上がる。(´Д`)
挫折した...

SELECT
  (
    SELECT
      COUNT(*)+1
    FROM
      T_TEST AS b
    WHERE
      b.ID > T_TEST.ID
  ) AS No,
  *
FROM
   T_TEST
ORDER BY
  T_TEST.ID DESC
;



更新日: 2010年04月14日 (水) 09時53分13秒
記事メニュー
ウィキ募集バナー