SQL Server でテーブルの値の数分のレコードを作成。
表1から表2を作成する。
表1
ID | 行数 |
---|---|
101 | 3 |
102 | 5 |
表2
ID | No |
---|---|
101 | 1 |
101 | 2 |
101 | 3 |
102 | 1 |
102 | 2 |
102 | 3 |
102 | 4 |
102 | 5 |
表1の作成(元テーブル)
CREATE TABLE RowList ( ID INT, Row INT -- 作成したい行数 ); INSERT RowList VALUES (1,11) INSERT RowList VALUES (2,22)
表2の作成
SELECT ID, RowNo FROM ( -- TOP(101)はIDあたりの最大行数。「-1」するとRowNoが0開始。 SELECT TOP (101) ROW_NUMBER() OVER (ORDER BY T1.object_id)-1 AS RowNo FROM sys.columns AS T1 cross join sys.columns AS T2 ) AS T CROSS JOIN ( SELECT ID,Row FROM RowList ) AS L WHERE T.RowNo <= L.Row ORDER BY ID,RowNo