急求各位高手帮忙解决

houtou1108 2010-04-26 11:17:28
我有一个表,要创建这样一个视图
表中有个字段A
字段A
0
1
2
3
4
5
我想得到的视图是
字段A 字段A
0 1
1 2
2 3
3 4
4 5
就是这个表的字段是两次出现在视图里,但是第二个字段A的值正好是第一个字段A的下一组值
请问如何实现,小弟在这里谢谢大家了
...全文
86 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
houtou1108 2010-04-26
  • 打赏
  • 举报
回复
可能是我没说清楚 ,我的数据并没有规律
所以按1楼的方法做的话,出来的结果并不正确
我把我的数据是
A
0.232
0.281
0.127
0.635
0.721
0.652
  • 打赏
  • 举报
回复
又是over()函数,有人能具体讲解下不?
ngx20080110 2010-04-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wildwave 的回复:]
select * from (
select a,
lead(a)over(order by a) a1
from a
)where a1 is not null;
[/Quote]
學習了
ngx20080110 2010-04-26
  • 打赏
  • 举报
回复

CREATE TABLE HR.TEMP2
(
A NUMBER
);
insert into temp2 values(0);
insert into temp2 values(1);
insert into temp2 values(2);
insert into temp2 values(3);
insert into temp2 values(4);
insert into temp2 values(5);
select a1,a2 from (
select a a1,lag(a,1,-99999999999) over (order by a desc) a2
from temp2
)
where a2 <> -99999999999
order by a1

A1 A2
---------- ----------
0 1
1 2
2 3
3 4
4 5
小灰狼W 2010-04-26
  • 打赏
  • 举报
回复
select * from (
select a,
lead(a)over(order by a) a1
from a
)where a1 is not null;
luoyoumou 2010-04-26
  • 打赏
  • 举报
回复
-- 或者视图可以这样定义:
create view t_v
as
select a1.a as a1, a2.a as a2
from t a1 inner join t a2 on a1.a=a2.a-1;
luoyoumou 2010-04-26
  • 打赏
  • 举报
回复
create table t(a NUMBER(18,0));

insert into t(a) values(0);
insert into t(a) values(1);
insert into t(a) values(2);
insert into t(a) values(3);
insert into t(a) values(4);
insert into t(a) values(5);
commit;

create view t_v
as
select a1.a as a1, a2.a as a2
from t a1 left join t a2 on a1.a=a2.a-1
where a2.a is not null;

select * from t_v;
shiyiwan 2010-04-26
  • 打赏
  • 举报
回复
你把他的order by a换成rowid就可以了

问题没有描述清楚,大家以为你是要先排序 呵呵
[Quote=引用 5 楼 houtou1108 的回复:]
可能是我没说清楚 ,我的数据并没有规律
所以按1楼的方法做的话,出来的结果并不正确
我把我的数据是
A
0.232
0.281
0.127
0.635
0.721
0.652
[/Quote]

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧