[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. IDとパスワードでSQL Serverでログインするユーザーを作成する。 (さらに&hellip…
  2. あいまい検索での否定 ○○以外の書き方 あいまい検索での否定は「[^任意の文字・文字列]…
  3. Oracle 12cではCDBとPDBの概念があるため、それより前のバージョンの様にログインすると、…
  4. C#でSQL Serverから値を取得するには、System.Data.SqlClientクラスを使…
  5. コンボボックスで「全て」が選択された場合に、NULLの行も取得したい場合。 (さらに&helli…

カテゴリー

[スポンサードリンク]




ページ上部へ戻る