[SQL Server]CTE式の再帰呼び出しを利用して連番テーブルを作成する

[スポンサードリンク]

「1・2・3・4・・・・・10」など、連番が入った一時テーブルを作成する。

概要

「ROW_NUMBER()」関数は、レコードがあるテーブルに対して行番号を振る。
これに対して、他のカラムがない連番だけのテーブルを作るにはCTE式の再帰呼び出しを使用する。

ROW_NUMBER関数を使用する場合は↓↓↓こちら↓↓↓
SQLServer SELECT文で連番を振る(項目ごとの連番・通し連番)

0埋めしない連番

WITH句で列名を定義しない方法

WITH句で列名を定義する方法

0埋めする連番

WITH句で列名を定義しない方法

WITH句で列名を定義する方法

0埋めの桁数を増やしたいとき

1.UNION ALLの上のクエリ部分の赤字のゼロを増やして、VARCHARの桁数も合わせる。
  「CAST(‘001‘ AS VARCHAR(3))」
  ※「001」で「varchar(3)」だと3桁で「0001」で「varchar(4)」だと4桁

2.UNION ALLの下のクエリのゼロを増やして、VARCHARの桁数も合わせる。
  「CAST(FORMAT(1 + idx, ‘000‘) AS VARCHAR(3))」
  ※「000」で「varchar(3)」だと3桁で「0000」で「varchar(4)」だと4桁

注意点

WHERE句の「<」を「<=」にしなければならないと思いがちだが、それだと値が一つ増えるので「<」にしておくこと。
また、
[SQL Server]ビューの作り方でも書いたように、FORMAT関数の戻り値はそのデータ型の最大桁数を返すので、「UNION ALL」の上下で桁数を合わせること。

[スポンサードリンク]

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


ピックアップ記事

  1. いまの時代、一つの企業に就職してそこで定年を迎えるというのはまれです。 しかし、それが一番いいと私…
  2. 割り算に必須な0除算回避 (さらに…)…
  3. SQLで月の末尾を求める方法。 (さらに…)…
  4. 例えば、商品の色が登録されているもの、登録されていないものなどを取得する場合 (さらに&hell…
  5. EXECUTE 権限がオブジェクト '関数名'、データベース 'データベース名'、スキーマ 'dbo…

カテゴリー

[スポンサードリンク]




ページ上部へ戻る