博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用lead分析功能相似的结构9*9乘法口诀功能
阅读量:7235 次
发布时间:2019-06-29

本文共 1909 字,大约阅读时间需要 6 分钟。

今天兄弟们的帮助,数据库,具有数据如下面的表:

no  name

1    a

2    b

3    c

4    d

怎样用一个sql显演示样例如以下结果:

ab

ac

ad

bc

bd

cd

对于这样的构造数据,是分析函数的强项。以下来做个试验:

create table t (no number,name varchar(2));

insert into t values(1,'a');
insert into t values(2,'b');
insert into t values(3,'c');
insert into t values(4,'d');
commit;
实现1:
select decode(h2, '', '', h1 || h2) b,
       decode(h3, '', '', h1 || h3) c,
       decode(h4, '', '', h1 || h4) d
  from (select name h1,
               lead(name, 1) over(order by name) h2,
               lead(name, 2) over(order by name) h3,
               lead(name, 3) over(order by name) h4
          from t) ;

B    C    D

---- ---- ----
ab   ac   ad
bc   bd
cd
实现2:相对实现1对于行进行了转换
with tt as(
select name h1,
               lead(name, 1) over(order by name) h2,
               lead(name, 2) over(order by name) h3,
               lead(name, 3) over(order by name) h4
          from t
)
select * from (select decode(h2, '', '', h1 || h2) b from tt
union
select decode(h3, '', '', h1 || h3) c from tt
union
select decode(h4, '', '', h1 || h4) d from tt)
where b is not null;

B

----
ab
ac
ad
bc
bd
cd

实现3:也能够不用分析函数

select a.name || b.name from t a, t b where a.no < b.no;

附录,一句SQL实现9*9乘法口诀:

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://ljgfm.baihongyu.com/

你可能感兴趣的文章
C#实现远程机器管理
查看>>
Android生成带图片的二维码
查看>>
jQuery对表单、表格的操作及更多应用(下:其他应用)
查看>>
[.net 面向对象编程基础] (21) 委托
查看>>
阶乘相关问题
查看>>
ASP.NET MVC导出excel(数据量大,非常耗时的,异步导出)
查看>>
Java引用类型变量
查看>>
利用window.navigator.userAgent判断当前是否微信内置浏览器
查看>>
《Programming WPF》翻译 第9章 2.选择一个基类
查看>>
IOS-整体框架类图
查看>>
在Ubuntu下安装*.sh
查看>>
NavigationBar 隐藏底部边线,阴影
查看>>
三种最典型的大数据存储技术路线
查看>>
stl非变易算法(二)
查看>>
java 关键字 transient
查看>>
Ubuntu配置和修改IP地址
查看>>
转载:如何设计一个可扩展的用户登录系统
查看>>
python对redis的常用操作 上 (对列表、字符串、散列结构操作)
查看>>
I.MX6 i2c_data_write_byte ioctl error: I/O error
查看>>
myisam MySQL 锁问题
查看>>