Ameba Ownd

アプリで簡単、無料ホームページ作成

Han The World

SQL Server SELECT文で行番号を表示

2017.04.23 13:29

関数:ROW_NUMBER()を使って、SELECT文で行番号を表示

※ROW_NUMBER関数:結果セットのパーティション内の行のシーケンス番号を返す


例1)まずは単純に行番号を取得

create table test01_tbl(

 t_id bigint

 ,t_name nvarchar(20)

 ,createat datetime default current_timestamp

 ,updateat datetime

 ,primary key (t_id)

);


insert into test01_tbl(t_id,t_name) values(1,'テスト 太郎');

insert into test01_tbl(t_id,t_name) values(2,'テスト 二郎');

insert into test01_tbl(t_id,t_name) values(3,'テスト 三郎');

insert into test01_tbl(t_id,t_name) values(4,'テスト 史郎');

insert into test01_tbl(t_id,t_name) values(5,'テスト 吾郎');

insert into test01_tbl(t_id,t_name) values(6,'テスト 六郎');

insert into test01_tbl(t_id,t_name) values(7,'テスト 七郎');


delete from test01_tbl where t_id = 6;


-- 行番号を表示

SELECT

 ROW_NUMBER() OVER(ORDER BY a.t_id ASC) AS 'ROW_NO'

 ,t_id

 ,t_name

FROM dbo.test01_tbl as a;

例2)PARTITION BY 句を使って、指定した項目単位で連番を取得・表示

create table test02_tbl(

 t_id bigint identity

 ,t_name nvarchar(20)

 ,t_group char(1)

 ,primary key (t_id)

);


insert into test02_tbl(t_name,t_group) values('テスト 太郎','A');

insert into test02_tbl(t_name,t_group) values('テスト 二郎','B');

insert into test02_tbl(t_name,t_group) values('テスト 三郎','A');

insert into test02_tbl(t_name,t_group) values('テスト 史郎','B');

insert into test02_tbl(t_name,t_group) values('テスト 吾郎','A');

insert into test02_tbl(t_name,t_group) values('テスト 六郎','C');

insert into test02_tbl(t_name,t_group) values('テスト 七郎','C');


delete from test02_tbl where t_id = 6;


SELECT

 t_name

 ,t_group

 ,ROW_NUMBER() OVER(PARTITION BY a.t_group ORDER BY a.t_group) AS 'グループ毎の連番'

FROM dbo.test02_tbl as a;