大哥,你这个样本给的有问题呀?你的这三个sql的意义也不一样。只不过恰巧得数一样了而已。
1、
SELECT a.id,a.value,SUM(nvl(a."VALUE",0)) 
FROM mytable A
JOIN mytable b ON b.id<=a.id
GROUP BY a.id,a.value
这个相当于order by value后的value*rownum。
2、
SELECT ID,VALUE,SUM(VALUE) OVER(ORDER BY ID) FROM mytable;
是ORDER BY ID后,当前value之和。
3、SELECT ID,value+LAG(VALUE,1,0) OVER(ORDER BY ID) FROM mytable
是ORDER BY ID后,上一个value+现在的value。你可以试试下面的样本。
INSERT INTO mytable VALUES(1,5);
INSERT INTO mytable VALUES(2,6);
INSERT INTO mytable VALUES(3,10);