[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. 画面のパラメータにより異なる検索条件や、異なるテーブルのデータを取得する際。 「UNION ALL…
  2. SQLServer SELECT文で連番を振る(項目ごとの連番・通し連番) (さらに&helli…
  3. IDとパスワードでSQL Serverでログインするユーザーを作成する。 (さらに&hellip…
  4. いまの時代、一つの企業に就職してそこで定年を迎えるというのはまれです。 しかし、それが一番いいと私…
  5. 開始日と終了日にブランクを設定した場合の記述にも対応 (さらに…)…

カテゴリー

[スポンサードリンク]




ページ上部へ戻る