私はこのテーブルを持っているとしましょう:
|Fld | Number|
1 5
2 2
そして、 Number
フィールドと同じ数の Fld
を検索するselectを作成したいとします。
|Fld |
1
1
1
1
1
2
2
どうすればこれを達成できますか?一時的なテーブルを作成し、 Number
に基づいてデータを作成することを考えていましたが、これを単一のSelect文で行うことができるのだろうかと思いました。
PS:私はSQLに新しい
あなたのRDBMSのバージョンがそれをサポートしているかどうかはわかりませんが(私はむしろそうは思われます)、ここでは再帰的なバージョンがあります:
WITH remaining (fld, times) as (SELECT fld, 1
FROM
UNION ALL
SELECT a.fld, a.times + 1
FROM remaining as a
JOIN as b
ON b.fld = a.fld
AND b.number > a.times)
SELECT fld
FROM remaining
ORDER BY fld
Given your source data table, it outputs this (count included for verification):
fld times
=============
1 1
1 2
1 3
1 4
1 5
2 1
2 2