test.sql
;WITH
--数字集合生成
L1 AS(SELECT 1 AS n UNION ALL SELECT 1) --2
, L2 AS(SELECT 1 AS n FROM L1 a ,L1 b) --4=2^2
, L3 AS(SELECT 1 AS n FROM L2 a ,L2 b) --16=4^4
, L4 AS(SELECT 1 AS n FROM L3 a ,L3 b) --256=16^16
, L5 AS(SELECT 1 AS n FROM L4 a ,L4 b) --65536=256^256
, mn AS(SELECT ROW_NUMBER() OVER(ORDER BY n) AS n FROM L4)
SELECT n FROM mn
「2のN乗」のイメージで最初の2レコードの集合群[L1]をCROSS JOINで掛け合わせを続けていき、最後にROW_NUMBER()でナンバリングする
たまに使うので忘れずにメモ。