col
9
20
26
39
59
71
99
下一行减去上一行结果为
col
11
6
13
20
12
28
10 个解决方案
#1
使用开窗口的Oracle分析函数。
#2
首先你的表要建个序号吧?否则的话就要按照rownum处理了。
select b.col-a.col
(select rownum,col from table) a,
(select rownum,col from table) b
where a.rownum+1=b.rownum;
select b.col-a.col
(select rownum,col from table) a,
(select rownum,col from table) b
where a.rownum+1=b.rownum;
#3
col -lead(col,1,0) over(order by rownum)
#4
学习
#5
呵呵,努力學習
#6
LEAD分析函数
#7
CREATE TABLE T(A NUMBER);
INSERT INTO T VALUES(9);
INSERT INTO T VALUES(20);
INSERT INTO T VALUES(26);
INSERT INTO T VALUES(39);
INSERT INTO T VALUES(59);
INSERT INTO T VALUES(71);
INSERT INTO T VALUES(99);
SELECT A-LAG(A,1,0) OVER(ORDER BY ROWNUM) COL FROM T;
-- 运行结果
COL
1 9
2 11
3 6
4 13
5 20
6 12
7 28
#8
如果第一行去掉的话,则可以改下sql如下:
SELECT COL
FROM (SELECT A - LAG(A, 1, 0) OVER(ORDER BY ROWNUM) COL, ROWNUM RN FROM T)
WHERE RN > 1;
--运行结果
COL
1 11
2 6
3 13
4 20
5 12
6 28
#9
lag函数吗,8楼的就可以。
#10
lag 是取前N行数据
LEAD是取后N行数据
#1
使用开窗口的Oracle分析函数。
#2
首先你的表要建个序号吧?否则的话就要按照rownum处理了。
select b.col-a.col
(select rownum,col from table) a,
(select rownum,col from table) b
where a.rownum+1=b.rownum;
select b.col-a.col
(select rownum,col from table) a,
(select rownum,col from table) b
where a.rownum+1=b.rownum;
#3
col -lead(col,1,0) over(order by rownum)
#4
学习
#5
呵呵,努力學習
#6
LEAD分析函数
#7
CREATE TABLE T(A NUMBER);
INSERT INTO T VALUES(9);
INSERT INTO T VALUES(20);
INSERT INTO T VALUES(26);
INSERT INTO T VALUES(39);
INSERT INTO T VALUES(59);
INSERT INTO T VALUES(71);
INSERT INTO T VALUES(99);
SELECT A-LAG(A,1,0) OVER(ORDER BY ROWNUM) COL FROM T;
-- 运行结果
COL
1 9
2 11
3 6
4 13
5 20
6 12
7 28
#8
如果第一行去掉的话,则可以改下sql如下:
SELECT COL
FROM (SELECT A - LAG(A, 1, 0) OVER(ORDER BY ROWNUM) COL, ROWNUM RN FROM T)
WHERE RN > 1;
--运行结果
COL
1 11
2 6
3 13
4 20
5 12
6 28
#9
lag函数吗,8楼的就可以。
#10
lag 是取前N行数据
LEAD是取后N行数据