[英]how to calculate YTD (Year To Date) value in Oracle table
有一個表,它的數據是這樣的:
year month v1 v2
2017 1 2 3
2017 2 4 5
... .. .. ..
2017 12 9 3
2018 1 1 3
2018 2 6 2
... .. .. ..
2018 12 2 2
該表有年,月,v1,v2 共 4 個字段,現在我想要一個 SQL 來計算每一行的 YTD 值,查詢結果如下所示:
year month v1 v2 v1_YTD v2_YTD
2017 1 2 3 2 3
2017 2 4 5 6 8
... .. .. .. .. ..
2017 12 9 3 m1 n1
2018 1 1 3 1 3
2018 2 6 2 7 5
... .. .. .. .. ..
2018 12 2 2 m2 n2
YTD值,例如計算2月,那么YTD值=1月+2月,如果月份是12月,YTD值應該是1月+2月+3月+...+12月的值。
YTD 值不應跨年。
有沒有SQL可以達到這個目的?
您可以使用分析功能SUM()OVER()
SELECT year, month, v1, v2,
SUM(v1) OVER (PARTITION BY year ORDER BY month) AS v1_ytd,
SUM(v2) OVER (PARTITION BY year ORDER BY month) AS v2_ytd
FROM table_name
ORDER BY year, month;
不確定它將在Oracle 10g及更低版本中工作。 嘗試添加此字段:
SUM(v1) OVER (PARTITION BY year ORDER BY month)
select
empid,
DOJ,
emp_salary,
sum(emp_salary) over (
partition by Extract(year from DOJ) order by DOJ asc
) as YTD
from emp;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.