如何将上一条记录和下一条记录的同一个字段的值累加 形成一个新的值

libRA_kin 2011-01-10 11:28:21

SELECT A.seq,A.decisionid,A.instid,A.modelid,A.nodeid,A.optrid,A.opttime AS opttime,
A.result,A.remark,B.username,C.nodename,D.orgname,E.remark AS decisionremark
FROM tb_bpm_instancenode A LEFT JOIN tb_bpm_decision E
ON E.decisionid=A.decisionid AND E.modelid=A.modelid AND E.nodeid=A.nodeid,
tb_user B,tb_bpm_node C,tb_organization D
WHERE A.optrid=B.userid AND C.nodeid=A.nodeid AND D.orgcode=B.orgcode
AND A.instid='3BN10120000000030'
ORDER BY A.opttime,nodeid ;


我的问题是这样的 就是说我想将 查询出的nodeid 进行上下相邻两个记录的nodeid的累加 形成新的一个值 num
比如 假设查询出的nodeid为:
1
2
3
4
然后我需要自己错位再相加 那么num就是:(1+2), (2+3), (3+4)
明白我的意思了吧? 请问这样能不能用sql 写出来
...全文
140 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
libRA_kin 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 gelyon 的回复:]
SQL code

WITH tab AS(
SELECT ROWNUM nodeid FROM dual CONNECT BY ROWNUM<=4
)
SELECT nodeid,nodeid+lead(nodeid,1)over(ORDER BY nodeid) num FROM tab


NODEID NUM
-----------------
1 3
……
[/Quote]
最准确! 谢谢
gelyon 2011-01-10
  • 打赏
  • 举报
回复

WITH tab AS(
SELECT ROWNUM nodeid FROM dual CONNECT BY ROWNUM<=4
)
SELECT nodeid,nodeid+lead(nodeid,1)over(ORDER BY nodeid) num FROM tab


NODEID NUM
-----------------
1 3
2 5
3 7
4 9
5
libRA_kin 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 java3344520 的回复:]
可以,上下字段累加用 leg或者LEAD()实现
你的需求不是很明确,加完之后记录如何做变化?
[/Quote]
举个例子:加入nodeid 为:1,2,3 那么最后的查询结果为
nodeid,num
1 3
2 5
3
我就希望是这样的
libRA_kin 2011-01-10
  • 打赏
  • 举报
回复
对 谢谢各位!
gelyon 2011-01-10
  • 打赏
  • 举报
回复

WITH tab AS(
SELECT ROWNUM nodeid FROM dual CONNECT BY ROWNUM<=4
)
SELECT nodeid,nodeid+lead(nodeid,1,0)over(ORDER BY nodeid) num FROM tab


NODEID NUM
-----------------
1 3
2 5
3 7
4 9
5 5

iqlife 2011-01-10
  • 打赏
  • 举报
回复
可以,上下字段累加用 leg或者LEAD()实现
你的需求不是很明确,加完之后记录如何做变化?
  • 打赏
  • 举报
回复
--类似这样?

scott@YPCOST> select ename,sal,lagsal+sal from (
2 select ename,sal,lag(sal) over(order by sal) lagsal from emp);

ENAME SAL LAGSAL+SAL
---------- ---------- ----------
SMITH 800
JAMES 950 1750
ADAMS 1100 2050
WARD 1250 2350
MARTIN 1250 2500
MILLER 1430 2680
TURNER 1500 2930
ALLEN 1600 3100
CLARK 2450 4050
BLAKE 2850 5300
JONES 2975 5825
SCOTT 3000 5975
FORD 3000 6000
KING 5000 8000

已选择14行。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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