SQL> WITH tmp AS
2 (SELECT *
3 FROM (SELECT rn,col,prod
4 FROM ( SELECT ROWNUM rn
5 FROM DUAL
6 CONNECT BY ROWNUM<=10
7 )
8 ,( SELECT ROWNUM col
9 FROM DUAL
10 CONNECT BY ROWNUM<=5
11 )
12 MODEL IGNORE NAV RETURN UPDATED ROWS
13 DIMENSION BY (rn,col)
14 MEASURES (0 prod )
15 RULES (
16 prod[any,any] order by rn,col=(CASE WHEN cv(rn)=1 AND cv(col)=1 THEN 1
17 ELSE MOD(prod[cv()-1,cv()],1E2)*cv(rn) + TRUNC(prod[cv(),cv()-1]/1E2)
18 END )
19 )
20 )
21 --WHERE rn=10
22 )
23 select rn,c1,c2,c3,c4,mod(c1,1E2)+mod(c2,1E2)*1E2+mod(c3,1E2)*1E4+mod(c4,1E2)*1E6 c6 from
24 (
25 select rn,min(decode(col,1,prod))c1, min(decode(col,2,prod))c2,min(decode(col,3,prod))c3,
26 min(decode(col,4,prod))c4,min(decode(col,5,prod))c5 from tmp group by rn
27 )order by 1
28 /
RN C1 C2 C3 C4 C6
---------- ---------- ---------- ---------- ---------- ----------
1 1 0 0 0 1
2 2 0 0 0 2
3 6 0 0 0 6
4 24 0 0 0 24
5 120 1 0 0 120
6 120 7 0 0 720
7 140 50 0 0 5040
8 320 403 4 0 40320
9 180 28 36 0 362880
10 800 288 362 3 3628800
已选择10行。