久々にSQLパズル:どうしてもループが嫌というならしょうがない

職場で持ち込まれた問題が面白かったので、久々にSQLパズルを一局。
次のような一行だけデータを持つテーブルがあります。データの中身は重要ではありません。


CREATE TABLE OneRow
(col1 VARCHAR(8) NOT NULL,
col2 VARCHAR(8) NOT NULL,
col3 VARCHAR(8) NOT NULL,
PRIMARY KEY (col1));

INSERT INTO OneRow VALUES('test', 'data', 'col')

問題は、このテーブルから取得したレコードを、次のように3行で表示したい、ということ。


col1 col2 col3 seq
==== ==== ==== ===
test data col 1
test data col 2
test data col 3

ホスト言語でやれば、3回ループさせるだけだし、私もそうすればいいと思ったのですが、そこを敢えてSQLでやりたい、ということで持ち込まれました。

条件は、3行に限らずn行に簡単に一般化できるクエリであること。
実装依存の機能も、最初は使ってよいことにしましょう。(できれば使わない方がいいけど)

OneRowテーブルから3回SELECTしてUNION ALLでつなげるという無芸な回答は、拡張性ないからナシです。
レベルは初級〜中級手前、ぐらいかな。

私が5秒で考えたコードは週末にのっけましょう。多分、細かいヴァリエーションを無視すれば、やり方は基本的に私が考えた一つしかないと思うのだけど、皆さんの意外なアイデアに期待。