小九九

with l as
 (select level as lv from dual connect by level <= 9),
m as
 (select a.lv as lv_a,
         b.lv as lv_b,
         to_char(b.lv) || ' × ' || to_char(a.lv) || ' = ' ||
         rpad(to_char(a.lv * b.lv), 2, ' ') as text
    from l a, l b
   where b.lv <= a.lv)
select listagg(m.text, '  ') within group(order by m.lv_b)
  from m
 group by m.lv_a;

1 × 1 = 1
1 × 2 = 2   2 × 2 = 4
1 × 3 = 3   2 × 3 = 6   3 × 3 = 9
1 × 4 = 4   2 × 4 = 8   3 × 4 = 12  4 × 4 = 16
1 × 5 = 5   2 × 5 = 10  3 × 5 = 15  4 × 5 = 20  5 × 5 = 25
1 × 6 = 6   2 × 6 = 12  3 × 6 = 18  4 × 6 = 24  5 × 6 = 30  6 × 6 = 36
1 × 7 = 7   2 × 7 = 14  3 × 7 = 21  4 × 7 = 28  5 × 7 = 35  6 × 7 = 42  7 × 7 = 49
1 × 8 = 8   2 × 8 = 16  3 × 8 = 24  4 × 8 = 32  5 × 8 = 40  6 × 8 = 48  7 × 8 = 56  8 × 8 = 64
1 × 9 = 9   2 × 9 = 18  3 × 9 = 27  4 × 9 = 36  5 × 9 = 45  6 × 9 = 54  7 × 9 = 63  8 × 9 = 72  9 × 9 = 81
with l as
 (select level as lv from dual connect by level <= 9),
m as
 (select a.lv as lv_a,
         b.lv as lv_b,
         to_char(b.lv) || ' × ' || to_char(a.lv) || ' = ' ||
         rpad(to_char(a.lv * b.lv), 2, ' ') as text
    from l a, l b
   where b.lv <= a.lv)
select "1","2","3","4","5","6","7","8","9"
  from m
pivot(max(m.text) for lv_b in(1,2,3,4,5,6,7,8,9))
order by 1;

1             2              3              4              5             6             7             8             9
------------- -------------- -------------- -------------- ------------- ------------- ------------- ------------- -----------
1 × 1 = 1                                                                                                         
1 × 2 = 2    2 × 2 = 4                                                                                           
1 × 3 = 3    2 × 3 = 6     3 × 3 = 9                                                                            
1 × 4 = 4    2 × 4 = 8     3 × 4 = 12    4 × 4 = 16                                                            
1 × 5 = 5    2 × 5 = 10    3 × 5 = 15    4 × 5 = 20    5 × 5 = 25                                             
1 × 6 = 6    2 × 6 = 12    3 × 6 = 18    4 × 6 = 24    5 × 6 = 30   6 × 6 = 36                               
1 × 7 = 7    2 × 7 = 14    3 × 7 = 21    4 × 7 = 28    5 × 7 = 35   6 × 7 = 42   7 × 7 = 49                 
1 × 8 = 8    2 × 8 = 16    3 × 8 = 24    4 × 8 = 32    5 × 8 = 40   6 × 8 = 48   7 × 8 = 56   8 × 8 = 64   
1 × 9 = 9    2 × 9 = 18    3 × 9 = 27    4 × 9 = 36    5 × 9 = 45   6 × 9 = 54   7 × 9 = 63   8 × 9 = 72   9 × 9 = 81
9 rows selected


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值