SQL Serverでレコードに連番を付ける

2019-11-25SQLServer

検索画面等で抽出したデータ件数が多い場合、レスポンスを良くするために50件毎にページ送りするようなことがあると思います。
その場合にレコードに連番をつけることで簡単にページ送りが可能になります。
ここではレコードに連番をつけるSQLを紹介します。

コーディング例

BEGIN
  CREATE TABLE #勤怠(
     氏名   VARCHAR(10)
    ,年月日 INT
    ,出勤   VARCHAR(5)
    ,退勤   VARCHAR(5)
  );

  INSERT INTO
    #勤怠
  VALUES
     ('佐藤',20190901,'8:53','18:07')
    ,('田中',20190901,'8:52','19:04')
    ,('山本',20190901,'8:49','18:12')
    ,('佐藤',20190902,'9:53','19:07')
    ,('田中',20190902,'9:52','20:04')
    ,('山本',20190902,'9:49','19:12')
    ,('佐藤',20190903,'10:53','20:07')
    ,('田中',20190903,'10:52','21:04')
    ,('山本',20190903,'10:49','20:12')
  ;

  SELECT
     ROW_NUMBER() OVER (ORDER BY 氏名,年月日)	AS [連番]
    ,*
  FROM
    #勤怠
  ;

  DROP TABLE #勤怠;
END

実行結果

連番 氏名 年月日 出勤 退勤
1 佐藤 20190901 8:53 18:07
2 佐藤 20190902 9:53 19:07
3 佐藤 20190903 10:53 20:07
4 山本 20190901 8:49 18:12
5 山本 20190902 9:49 19:12
6 山本 20190903 10:49 20:12
7 田中 20190901 8:52 19:04
8 田中 20190902 9:52 20:04
9 田中 20190903 10:52 21:04

ROW_NUMBER()でレコード番号が取得でき、OVER句でORDER BYを指定すると、ORDER BYで指定した並び順でレコード番号が採番されます。
以上、「SQL Serverでレコードに連番を付ける」のご紹介でした。

 

株式会社システムトラスト

人材募集中です。

システムトラストでは、システムエンジニア、プログラマーなどを随時募集中です。気軽にご相談ください。

お問合せ