根据最新日期信息按人数订购的每年总计

时间:2018-03-22 09:14:52

标签: sql sql-server tsql

我们尝试根据他最新的日期信息计算每人订购的每年的运行总额。所以我得到了一个如何订购数据的例子:

enter image description here

预期结果:

enter image description here

因此,对于每个下载日期,我们希望按年份排序的所有人员(现在年份仅为2018年)运行总数

到目前为止我们有什么:

sum(Amount)
over(partition by [Year],[Person]
order by [Enddate)
where max(Downloaded)

知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

只需使用窗口功能

select *,
        sum(Amount) over (partition by Year, Downloaded) RuningTotal 
from table t

答案 1 :(得分:0)

尝试使用具有移动下载日期范围的子查询。

SELECT
    T.*,
    RunningTotalByDate = (
        SELECT
            SUM(N.Amount)
        FROM
            YourTable AS N
        WHERE
            N.Downloaded <= T.Downloaded)
FROM
    YourTable AS T
ORDER BY
    T.Downloaded ASC,
    T.Person ASC

或窗口SUM()。不包含PARTITION BY,因为当按列值分区更改时,它将重置总和。

SELECT
    T.*,
    RunningTotalByDate = SUM(T.Amount) OVER (ORDER BY T.Downloaded ASC)
FROM
    YourTable AS T
ORDER BY
    T.Downloaded ASC,
    T.Person ASC