SQL で FizzBuzz (Oracle 編)

Oracle 編」と書いてはみたものの,Oracle 以外はやりそうもない予感.
実は最初,H2 Database Engine でやろうと思ったのだけど,H2 って再帰問い合わせはまだサポートしてないのね.
ってことになると,数列を作るのに 10 行のテーブルまたはビューを用意して自己クロス結合するみたいな方法しか思いつかなくて,そんなのやるまでもないというかつまらないので Oracle の階層問い合わせに逃げましたとさ.
そんなわけで (どんなわけで?),こうなりました.

select
  case
    when mod(n, 15) = 0 then 'FizzBuzz'
    when mod(n,  3) = 0 then 'Fizz'
    when mod(n,  5) = 0 then 'Buzz'
    else                     to_char(n)
  end
from (
  select
    level n
  from
    dual
  connect by
    level <= 100
)
order by
  n

んー...
これもつまらないか.(^^;
いいの,こういうネタでもないと階層問い合わせを使う機会がないんだもん.


そういえば,Oracle って標準 SQL再帰問い合わせ (WITH RECURSIVE) ってサポートしてるのかな?
ごそごそ.
んー... サポートしてないっぽい.
Microsoft SQL Server はサポートしてる?
だったら id:taedium さんがセットアップしてくれたら試してみようかな.
そういう時でもないと SQL Server再帰問い合わせを使う機会もなさそうだもん.