with t as (selectlevelas n from dual connect bylevel<=9) select sys_connect_by_path(b.n ||'*'|| a.n ||'='|| a.n * b.n, '') as 九九乘法表 from t a, t b where a.n >= b.n andlevel= a.n start with b.n=1 connect by a.n=prior a.n and b.n=prior b.n+1;
绝吧?用到了不少东东:WITH、sys_connect_by_path, start with ... connect by ...
执行结果:
SQL>with t as (selectlevelas n from dual connect bylevel<=9) 2select sys_connect_by_path(b.n ||'*'|| a.n ||'='|| a.n * b.n, '') as 九九乘法表 3from t a, t b 4where a.n >= b.n andlevel= a.n 5 start with b.n=1 6 connect by a.n=prior a.n and b.n=prior b.n+1; 九九乘法表 -------------------------------------------------------------------------------- 1*1=1 1*2=22*2=4 1*3=32*3=63*3=9 1*4=42*4=83*4=124*4=16 1*5=52*5=103*5=154*5=205*5=25 1*6=62*6=123*6=184*6=245*6=306*6=36 1*7=72*7=143*7=214*7=285*7=356*7=427*7=49 1*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=64 1*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81 9 rows selected SQL>
with t as (select level as n from dual connect by level 9) select sys_connect_by_path(b.n || * || a.n || = || a.n * b.n, ) as 九九乘法表 from t a, t b where a.n >= b.n and level = a.n