ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » Oracle开发 » 练练手,一句SQL实现输出九九乘法表

标题: [精华] 练练手,一句SQL实现输出九九乘法表
离线 nyfor
Oracle Fan


来自 苏州
精华贴数 7
个人空间 0
技术积分 7355 (174)
社区积分 144 (2920)
注册日期 2002-1-6
论坛徽章:14
现任管理团队成员ITPUB元老授权会员   
      

发表于 2007-4-25 20:38 
练练手,一句SQL实现输出九九乘法表

有兴趣的可以试试


__________________
 
帮助别人,也在帮助自己!
Oracle Version 9.2.0
Oracle Version 10.2.0

看别人不顺眼是自己修养不够!
只看该作者    顶部
在线/呼叫 junsansi
无名扫把


来自 bj
精华贴数 7
个人空间 9096
技术积分 8241 (153)
社区积分 689 (1174)
注册日期 2006-7-17
论坛徽章:66
现任管理团队成员2008北京奥运纪念徽章:举重2008北京奥运纪念徽章:皮划艇静水2008北京奥运纪念徽章:跳水2008北京奥运纪念徽章:拳击2008北京奥运纪念徽章:游泳
      

发表于 2007-4-25 21:29 
哈哈,有点儿意思,俺来一个笨方法实现的~~~~

select r1 || '*' || r1 || '=' || r1 * r1 A,
       decode(r2, '', '', r2 || '*' || r1 || '=' || r2 * r1) b,
       decode(r3, '', '', r3 || '*' || r1 || '=' || r3 * r1) C,
       decode(r4, '', '', r4 || '*' || r1 || '=' || r4 * r1) D,
       decode(r5, '', '', r5 || '*' || r1 || '=' || r5 * r1) E,
       decode(r6, '', '', r6 || '*' || r1 || '=' || r6 * r1) F,
       decode(r7, '', '', r7 || '*' || r1 || '=' || r7 * r1) G,
       decode(r8, '', '', r8 || '*' || r1 || '=' || r8 * r1) H,
       decode(r9, '', '', r9 || '*' || r1 || '=' || r9 * r1) I
from   (select level r1,
               lag(level, 1) over(order by level) r2,
               lag(level, 2) over(order by level) r3,
               lag(level, 3) over(order by level) r4,
               lag(level, 4) over(order by level) r5,
               lag(level, 5) over(order by level) r6,
               lag(level, 6) over(order by level) r7,
               lag(level, 7) over(order by level) r8,
               lag(level, 8) over(order by level) r9
        from   dual
        connect by level < 10)


__________________
沉淀是一件很枯燥的事情,我要从沉淀中汲取营养,于枯燥中寻找乐趣,我没疯,你才是疯子,哇哈哈,哇哈哈哈哈~~
============================================
http://www.5ienet.com我爱我佳
扫地不过是我表面上的工作,我真正的身份其实是无名老僧------------------手里那根扫把~~~~
只看该作者    顶部
在线/呼叫 eworm
老会员



精华贴数 0
个人空间 0
技术积分 1421 (1194)
社区积分 280 (1966)
注册日期 2006-10-5
论坛徽章:9
会员2007贡献徽章生肖徽章2007版:兔生肖徽章2007版:鼠生肖徽章2007版:猴生肖徽章2007版:牛生肖徽章2007版:鸡
生肖徽章2007版:虎ITPUB新首页上线纪念徽章每日论坛发贴之星   

发表于 2007-4-26 07:59 
呵呵,不错不错


__________________
------------------------------------------------------------------
Change is nature!
------------------------------------------------------------------
只看该作者    顶部
离线 nyfor
Oracle Fan


来自 苏州
精华贴数 7
个人空间 0
技术积分 7355 (174)
社区积分 144 (2920)
注册日期 2002-1-6
论坛徽章:14
现任管理团队成员ITPUB元老授权会员   
      

发表于 2007-4-26 09:10 
不错! 虽然这样的SQL语句实现出来也没什么意义, 但可以训练你的SQL能力.
希望有更多的方法实现...


__________________
 
帮助别人,也在帮助自己!
Oracle Version 9.2.0
Oracle Version 10.2.0

看别人不顺眼是自己修养不够!
只看该作者    顶部
离线 iooyoo
迷眼流金


精华贴数 0
个人空间 20
技术积分 4220 (333)
社区积分 3501 (386)
注册日期 2006-6-15
论坛徽章:22
现任管理团队成员2008北京奥运纪念徽章:皮划艇激流回旋2008北京奥运纪念徽章:举重2008年新春纪念徽章  
      

发表于 2007-4-26 09:47 
想了很久
不知道这个怎么样:
PHP code:


select rn
ltrim(max(sys_connect_by_path(product',')), ','product

from 

(

  
select rnproductmin(productover(partition by rnproduct_min

  
,(row_number() over(order by rnproduct)) + (dense_rank() over(order by rn)) numId

  from 

  
(

    
select b.rna.rn || '*' || b.rn || '=' || a.rn b.rn product 

    from 
(select rownum rn from all_objects where rownum <= 9a

    (
select rownum rn from all_objects where rownum <= 9b

    where a
.rn <= b.rn

    order by b
.rnproduct

  
)



start with product product_min

connect by numId 
prior numId

group by rn

order




__________________

使君欲醉离亭酒
酒醒离愁转有
紫禁多时虚右
苕霄留难久
一声歌掩双罗袖
日落乱山春后
犹有东城烟柳
青荫长依旧
只看该作者    顶部
离线 nyfor
Oracle Fan


来自 苏州
精华贴数 7
个人空间 0
技术积分 7355 (174)
社区积分 144 (2920)
注册日期 2002-1-6
论坛徽章:14
现任管理团队成员ITPUB元老授权会员   
      

发表于 2007-4-26 09:56 
嗯,也不错!
快接近最终结果了:
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
.....


__________________
 
帮助别人,也在帮助自己!
Oracle Version 9.2.0
Oracle Version 10.2.0

看别人不顺眼是自己修养不够!
只看该作者    顶部
在线/呼叫 junsansi
无名扫把


来自 bj
精华贴数 7
个人空间 9096
技术积分 8241 (153)
社区积分 689 (1174)
注册日期 2006-7-17
论坛徽章:66
现任管理团队成员2008北京奥运纪念徽章:举重2008北京奥运纪念徽章:皮划艇静水2008北京奥运纪念徽章:跳水2008北京奥运纪念徽章:拳击2008北京奥运纪念徽章:游泳
      

发表于 2007-4-26 10:05 


QUOTE:
最初由 iooyoo 发布
想了很久
不知道这个怎么样:
PHP code:


select rn
ltrim(max(sys_connect_by_path(product',')), ','product

from 

(

  
select rnproductmin(productover(partition by rnproduct_min

  
,(row_number() over(order by rnproduct)) + (dense_rank() over(order by rn)) numId

  from 

  
(

    
select b.rna.rn || '*' || b.rn || '=' || a.rn b.rn product 

    from 
(select rownum rn from all_objects where rownum <= 9a

    (
select rownum rn from all_objects where rownum <= 9b

    where a
.rn <= b.rn

    order by b
.rnproduct

  
)



start with product product_min

connect by numId 
prior numId

group by rn

order



这个强,学习~~~


__________________
沉淀是一件很枯燥的事情,我要从沉淀中汲取营养,于枯燥中寻找乐趣,我没疯,你才是疯子,哇哈哈,哇哈哈哈哈~~
============================================
http://www.5ienet.com我爱我佳
扫地不过是我表面上的工作,我真正的身份其实是无名老僧------------------手里那根扫把~~~~
只看该作者    顶部
离线 iooyoo
迷眼流金


精华贴数 0
个人空间 20
技术积分 4220 (333)
社区积分 3501 (386)
注册日期 2006-6-15
论坛徽章:22
现任管理团队成员2008北京奥运纪念徽章:皮划艇激流回旋2008北京奥运纪念徽章:举重2008年新春纪念徽章  
      

发表于 2007-4-26 10:06 


QUOTE:
最初由 nyfor 发布
嗯,也不错!
快接近最终结果了:
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
.....


最后有个order by rn
加了(1*1=),不知道怎么拆开 1*2=2, 2*2=4 成两列


__________________

使君欲醉离亭酒
酒醒离愁转有
紫禁多时虚右
苕霄留难久
一声歌掩双罗袖
日落乱山春后
犹有东城烟柳
青荫长依旧
只看该作者    顶部
离线 hit_lip01
初级会员



精华贴数 0
个人空间 0
技术积分 2 (213539)
社区积分 3 (22251)
注册日期 2007-4-18
论坛徽章:0
      
      

发表于 2007-4-26 11:04 
都是强人!!


只看该作者    顶部
离线 nyfor
Oracle Fan


来自 苏州
精华贴数 7
个人空间 0
技术积分 7355 (174)
社区积分 144 (2920)
注册日期 2002-1-6
论坛徽章:14
现任管理团队成员ITPUB元老授权会员   
      

发表于 2007-4-26 11:21 


QUOTE:
最初由 iooyoo 发布


最后有个order by rn
加了(1*1=),不知道怎么拆开 1*2=2, 2*2=4 成两列


不用拆, 这样就行了, 不错不错!


__________________
 
帮助别人,也在帮助自己!
Oracle Version 9.2.0
Oracle Version 10.2.0

看别人不顺眼是自己修养不够!
只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问