簡體   English   中英

如何計算 Oracle 表中的 YTD(年初至今)值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM