SQL で連番を扱うときに
SQL で連番を扱うときに、数字が入った配列が有るととても便利です。ただしソレを作成するのは不便です。
0..9
これを、次のようなテーブル行に展開したい。
:id |
---|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
SQLで配列を展開するように行にする。
select 0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 9 union select 9 ;
結果
0 ---------- 0 2 3 4 5 6 7 9
N個に展開してJOINすると
N個に展開して直積を取ってあげると、結構好きにテーブル展開を扱えるようになる。テーブルのピボットや、空席を調べたり欠番を埋めるのに作りやすくなる。
便利
ちょっといじれば10x10x10 の直積で
1000行作ったり出来る。なんか楽しい
select * from ( select 0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 9 union select 9 ) as a left join ( select 0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 9 union select 9 ) as b left join ( select 0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 9 union select 9 ) as c ;
参考
https://stackoverflow.com/questions/1564956/how-can-i-select-from-list-of-values-in-sql-server