注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

太极虫的博客

好好学习,天天向上

 
 
 

日志

 
 

一条SQL写九九乘法表  

2008-04-08 13:02:33|  分类: ORACLE技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
刚刚看到有人讨论SQL语句对程序开发的重要性,个人感觉很多问题可以通过SQL语句直接解决,从而可以有效的降低程序开发的复杂性.
什么?
SQL语句有什么特别的?
你也可以会写?
 
OK,给你出个题目,答上来就算你嬴,题目也很简单,就是用一条SQL写一个九九乘法表出来,哈哈,不会了吧?
看看这个:
 
select r1 || '*' || 1 || '=' || r1 * 1 A,
decode(r2, '', '', r2 || '*' || 2 || '=' || r2 * 2) b,
decode(r3, '', '', r3 || '*' || 3 || '=' || r3 * 3) C,
decode(r4, '', '', r4 || '*' || 4 || '=' || r4 * 4) D,
decode(r5, '', '', r5 || '*' || 5 || '=' || r5 * 5) E,
decode(r6, '', '', r6 || '*' || 6 || '=' || r6 * 6) F,
decode(r7, '', '', r7 || '*' || 7 || '=' || r7 * 7) G,
decode(r8, '', '', r8 || '*' || 8 || '=' || r8 * 8) H,
decode(r9, '', '', r9 || '*' || 9 || '=' || r9 * 9) I
from (select level r1,
lag(level+1, 1) over(order by level) r2,
lag(level+2, 2) over(order by level) r3,
lag(level+3, 3) over(order by level) r4,
lag(level+4, 4) over(order by level) r5,
lag(level+5, 5) over(order by level) r6,
lag(level+6, 6) over(order by level) r7,
lag(level+7, 7) over(order by level) r8,
lag(level+8, 8) over(order by level) r9
from dual
connect by level < 10)
 
什么?这个你也会?
那么看看这个!
select rn, ltrim(max(sys_connect_by_path(product, ',')), ',') product
from
(
  select rn, product, min(product) over(partition by rn) product_min
  ,(row_number() over(order by rn, product)) + (dense_rank() over(order by rn)) numId
  from
  (
    select b.rn, a.rn || '*' || b.rn || '=' || a.rn * b.rn product
    from (select rownum rn from all_objects where rownum <= 9) a,
    (select rownum rn from all_objects where rownum <= 9) b
    where a.rn <= b.rn
    order by b.rn, product
  )
)
start with product = product_min
connect by numId - 1 = prior numId
group by rn
order by rn
 
什么?这个也没什么大不了的,
看来不拿出点绝招来,你是不会服气的,
看看我的终极大招!!!!!!!
 
select reverse(sys_connect_by_path
              (rpad(reverse(to_char(rownum * lv)), 2) || '=' || rownum || '*' || lv ,'  ')
              )
  from (select level lv from dual connect by level < 10)
where lv = 1
connect by lv + 1 = prior lv;
 
小样,还敲不死你!
  评论这张
 
阅读(413)| 评论(3)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017