繁体   English   中英

在ORACLE SQL中向后查询数据

[英]Querying Data Backward in ORACLE SQL

我有一个关于oracle sql的简单问题。 所以我有这张桌子

WEEKNUM DATA
1       10
2       4
3       6
4       7

所以我想做一个这样的视图,

WEEKNUM DATA ACCUM_DATE
1       10   10
2       4    14
3       6    20
4       7    27

我花了几个小时在这个简单的东西上,但运气不佳

非常感谢

SELECT weeknum, 
       data,
       sum(data) over (order by weeknum) accum_data
  FROM your_table_name

应该管用。 我在这里使用sum分析功能,并假设您weeknum最小的weeknum值开始,并随着weeknum值的增加而不断增加运行总额。 我还假设您永远不想重置累计金额。 如果您要进行诸如生成每年重新开始的累计金额之类的操作,则需要在分析函数中添加一个partition by

在这种情况下,您可以使用Cross JOin

查询:

select 
A.WEEKNUM
, A.DATA
, SUM(B.DATA) DA
from table1 A
cross join table1 B
WHERE A.WEEKNUM>=B.WeekNUM
GROUP BY A.WEEKNUM
, A.DATA
order by A.WEEKNUM

结果:

WEEKNUM DATA    DA
1   10  10
2   4   14
3   6   20
4   7   27

谢谢大家,但是我发现这种方法非常有效,

OVER (ORDER BY WEEKNUM ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS CUMULATIVE_WEIGHT

或使用子选择来计算:

select WEEKNUM, DATA, (select sum(DATA) from tablename t2
                       where t2.weeknum <= t1.weeknum) as ACCUM_DATE
from tablename t1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM