求助大神,需要查询表中每一行数据小于这个时间戳的这个表中的其他数据的汇总,不适用子查询,有什么其他的解决方式吗?
https://www.cnblogs.com/zijinyouyou/p/5190696.html
利用分组开窗+递归+OLAP分析函数,可以一个SQL直接扒出来,希望对你有帮助
CREATE TABLE test_cb
(key NUMBER
,iodate DATE
,amount NUMBER);
INSERT INTO test_cb
(key, iodate, amount)
SELECT 1 key
,DATE '2020-05-01' iodate
,100 amount
FROM dual
UNION ALL
SELECT 1 key
,DATE '2020-05-01' iodate
,150 amount
FROM dual
UNION ALL
SELECT 1 key
,DATE '2020-05-03' iodate
,120 amount
FROM dual
UNION ALL
SELECT 2 key
,DATE '2020-05-01' iodate
,80 amount
FROM dual
UNION ALL
SELECT 2 key
,DATE '2020-05-02' iodate
,230 amount
FROM dual
UNION ALL
SELECT 2 key
,DATE '2020-05-04' iodate
,710 amount
FROM dual;
SELECT sub2.key
,sub2.iodate
,sub2.amount "当前行金额"
,dbms_aw.eval_number(substr(sys_connect_by_path(sub2.amount, '+'), 2)) "汇总到当前行金额"
,lag(dbms_aw.eval_number(substr(sys_connect_by_path(sub2.amount, '+')
,2))) over(PARTITION BY sub2.key ORDER BY sub2.iodate) "汇总到上一行金额"
FROM (SELECT sub1.key
,sub1.iodate
,SUM(sub1.amount) amount
,row_number() over(PARTITION BY sub1.key ORDER BY sub1.iodate) rn
FROM test_cb sub1
GROUP BY sub1.iodate
,sub1.key) sub2
CONNECT BY nocycle(PRIOR sub2.rn = sub2.rn - 1
AND PRIOR sub2.key = sub2.key)
START WITH rn = 1
https://blog.csdn.net/DarianMograine/article/details/108561662