我们尝试根据他最新的日期信息计算每人订购的每年的运行总额。所以我得到了一个如何订购数据的例子:
预期结果:
因此,对于每个下载日期,我们希望按年份排序的所有人员(现在年份仅为2018年)运行总数
到目前为止我们有什么:
sum(Amount)
over(partition by [Year],[Person]
order by [Enddate)
where max(Downloaded)
知道如何解决这个问题吗?
答案 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