三个想通过oracle(plsql)实现的查询

newbie724 2011-11-23 03:09:58
1. 假设通过下面的查询
select vol from table A where ss='5';
可以查询到6条记录,假设为,我想将这一列错位排列一下,后一列i行的值等于前一列i-1行的值,
1
2
3
4
5
6
例如我想错位出3列,则新的组成的列为,最多只能为4行,怎样写出来?
1 2 3
2 3 4
3 4 5
4 5 6

2.在plsql的过程中,使用两个游标,分别查到两列一样长得数值,怎样求他们之间的协方差?

3.怎样使过程插入到一个表中,表中有些列可为空,每次插入的时候不知道这个插入值的长度。例如一个表有4列,
除了第一列外都为空,在插入的时候,有可能只有前两列的值,或者只有前三列的值,怎样使用insert into table values(。。。)插入。

谢谢,问题好多,实在没分了,给我点想法,让我再去查询也可以。
...全文
151 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cosio 2011-11-23
  • 打赏
  • 举报
回复
SELECT * FROM 
(SELECT ROWNUM rn FROM dual CONNECT BY ROWNUM BETWEEN 1 AND 4 ) A,
(SELECT ROWNUM rm FROM dual CONNECT BY ROWNUM BETWEEN 1 AND 5 ) B,
(SELECT ROWNUM rq FROM dual CONNECT BY ROWNUM BETWEEN 1 AND 6 ) C
WHERE a.rn=b.rm-1 AND a.rn=c.rq-2

--modify
cosio 2011-11-23
  • 打赏
  • 举报
回复
SELECT * FROM 
(SELECT ROWNUM rn FROM dual CONNECT BY ROWNUM BETWEEN 1 AND 6 ) A,
(SELECT ROWNUM rm FROM dual CONNECT BY ROWNUM BETWEEN 1 AND 6-1 ) B,
(SELECT ROWNUM rq FROM dual CONNECT BY ROWNUM BETWEEN 2 AND 6 ) C
WHERE a.rn=b.rm-1 AND a.rn=c.rq-2

--result:
1 2 3
2 3 4
3 4 5
4 5 6


我心飞翔 2011-11-23
  • 打赏
  • 举报
回复
问题3:
在程序代码中做判断,判断哪些列有值,然后insert into table (列1,列2,..) values (值1, 值2,...);
或写一个存储过程,存储过程中为各列的值,设置形参的默认值为null)。
或写多个存储过程,进行重载。

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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