1

我在 oracle 中有一张如下表

用户 观点
1 2020 1 1
2 2020 1 1
3 2020 1 0
1 2020 2 1
2 2020 2 0
3 2020 2 1
1 2020 3 1
2 2020 3 0
3 2020 3 1

现在我想得到如下表

用户 观点
1 2020 1 1
1 2020 2 1
1 2020 3 2
2 2020 1 1
2 2020 2 1
2 2020 3 1
3 2020 1 0
3 2020 2 1
3 2020 3 2

我在下面尝试但没有达到我的预期

SELECT A_YEAR,A_MONTH,USER, SUM(POINTT) OVER (ORDER BY A_YEAR,A_MONTH,USER) CUM_POINT
FROM (
    SELECT WA.USER, WA.A_YEAR,WA.A_MONTH,1 AS POINTT FROM HRANALY.PUAN_ACTUAL PA
    INNER JOIN HRANALY.WAGE_ACTUAL WA ON WA.USER= PA.USER AND WA.A_YEAR = PA.A_YEAR AND WA.A_MONTH = PA.A_MONTH
    INNER JOIN HRANALY.PUAN_ACTUAL_DETAIL PAD ON PAD.REF_WAGE=PA.ID AND PAD.KALEM_KOD='GRUP_HEDEF' AND PAD.AMOUNT>0
    ORDER BY a_month
)
ORDER BY A_YEAR,A_MONTH,USER;

在此查询中,CUM_POINT 从 1 变为 n 不能作为基于用户年月的用户如何获得第二个带有查询的表。

提前致谢

4

2 回答 2

3

您需要如下分析功能:

select user_id, year, month,
       sum(point) over (partition by user_id order by year, month) as points
  from t

在 ytour 查询中,只需按子句添加分区,如下所示:

SUM(POINTT) OVER (PARTITION BY USER ORDER BY A_YEAR,A_MONTH,USER) CUM_POINT
于 2021-01-08T11:05:05.830 回答
1
select x.*, 
       sum(point) over (partition by year, month, userid) sum_point
from foo x

在此处输入图像描述

于 2021-01-08T11:05:35.507 回答