SQLを使ってデータパターンの一覧を作ってみたのでメモ。
今回は対象はSQL Serverです。
方法としては直積(CROSS JOIN)で作成します。
まずは、テーブル作成
CREATE TABLE Table1 ([id] int, [ddata] varchar(1)) ; CREATE TABLE Table2 ([id2] int, [ddata2] varchar(2)) ;
テーブルにインサート
INSERT INTO Table1 ([id], [ddata]) VALUES (1, 'A'), (2, 'B'), (3, 'C') ; INSERT INTO Table2 ([id2], [ddata2]) VALUES (11, 'AA'), (22, 'BB'), (33, 'CC') ;
Selectでそれぞれのテーブルを確認
select * from Table1
select * from Table2
それではここから、データパターンの一覧を抽出してみる。
select * from Table1 cross join Table2 order by id,ddata,id2,ddata2
これだとTable1の行の数×Table2の行の数になる。
今回は列ごとに組み合わせを作りたいのでさらにネストさせる。
select * from ( select * from (select id from Table1 )AAA cross join (select ddata from Table1) BBB )AAABBB cross join ( select * from (select id2 from Table2 )CCC cross join (select ddata2 from Table2) DDD )CCCDDD order by id,ddata,id2,ddata2
うむ。できた。
列の数が増えるほどネストさせないといけないのがネック。