SELECT時にカウントアップ

なすひこ
2014-08-25 12:46 2912 1
下のように、あるテーブルをSELECTしたときに、
[NO]を定義して、[NO]にカウントをセットする。
ただし、カーソルは使用しない方法を
知っている方いますか?

<テーブル項目>
本部、部、課
<SELECT実行後>
NO 本部  部    課
-------------------------
1 東京  総務   総務
2  東京  人事   採用
3  東京  営業   営業1
4  東京  営業   営業2

コメント

2014年 09月 02日 (12:05)
こんにちは。
イノ(inno)です。

[NO]にカウントをセットする方法としては
ROW_NUMBERを使えばできます。
ROW_NUMBERはSQL SERVER 2005以上から使えます。

ROW_NUMBERについては下記のリンクをご参考ください。
http://www.innoya.com/Board/ViewTip.aspx?menuID=4&idx=491

では、質問についてSQLを作成してみましたので、
下記のSQLを実行して頂いてご確認ください。

-- #### テーブル作成
CREATE TABLE dbo.TempData
(
[本部] nvarchar(10)
, [部] nvarchar(10)
, [課] nvarchar(10)
)


-- #### データ登録
INSERT INTO dbo.TempData ([本部], [部], [課])
VALUES (N'東京', N'総務', N'総務')
INSERT INTO dbo.TempData ([本部], [部], [課])
VALUES (N'東京', N'人事', N'採用')
INSERT INTO dbo.TempData ([本部], [部], [課])
VALUES (N'東京', N'営業', N'営業1')
INSERT INTO dbo.TempData ([本部], [部], [課])
VALUES (N'東京', N'営業', N'営業2')

-- #### 結果抽出
SELECT ROW_NUMBER() OVER (ORDER BY [本部] ASC, [部] DESC, [課] ASC) AS [NO]
,[本部], [部], [課]
FROM dbo.TempData

-- #### 実行結果
NO 本部 部 課
-------------------- ---------- ---------- ----------
1 東京 総務 総務
2 東京 人事 採用
3 東京 営業 営業1
4 東京 営業 営業