sql - SQL Server 按日期分组
问题描述
SELECT [DATE], [AMOUNT], SUM(AMOUNT) OVER (ORDER BY DATE) AS 'Running Total'
FROM PeopleActi
WHERE INSTANCE = 'Bank'
AND DATE IS NOT NULL
GROUP BY [DATE], [AMOUNT];
在上面的代码中,我选择了用户的日期、金额,以及"SUM(AMOUNT) OVER (ORDER BY DATE) AS 'Running Total'"
他们在一段时间内的总成本。当我运行此代码时,我得到以下结果:
DATE AMOUNT Running Total
2018-10-05 100 100
2018-10-06 1000 1100
2018-10-07 5000 6100
2018-10-08 2000 8100
2018-10-09 1000 9100
2018-10-10 5000 14100
2018-10-11 3000 25100
2018-10-11 8000 25100
这很好用,但我的问题是最后两行。我希望他们按日期分组,并且有两天的总金额,所以应该是:
Date Amount Running Total
2018-10-11 11000 25100
有谁知道这是如何实现的?我[DATE]
的类型是 DATE。
更新!!!!
我看过你的一些解决方案,它们很好,但重要的是我也显示了 AMOUNT 和 Running Total 金额,所以最终结果应该是......
DATE AMOUNT Running Total
2018-10-05 100 100
2018-10-06 1000 1100
2018-10-07 5000 6100
2018-10-08 2000 8100
2018-10-09 1000 9100
2018-10-10 5000 14100
2018-10-11 11000 25100
感谢大家到目前为止的帮助!
解决方案
将金额分组,然后进行累计
WITH CTE
AS
(
SELECT A.Dt,
SUM(A.Amount) AS Amount
FROM (
VALUES ('2018-10-05',100),
('2018-10-06',1000),
('2018-10-07',5000),
('2018-10-08',2000),
('2018-10-09',1000),
('2018-10-10',5000),
('2018-10-11',3000),
('2018-10-11',8000)
) AS A(Dt,Amount)
GROUP BY A.Dt
)
SELECT C.Dt,
C.Amount,
SUM(C.Amount) OVER (ORDER BY C.Dt) AS CumTotal
FROM CTE AS C;
推荐阅读
- c++ - 重新分配地图值时出现分段错误
- c - 这种 C 行为叫什么
- html - 不允许加载本地资源 Microsoft Edge
- google-apps-script - 我如何将 parseCsvResponse 内容拆分为 Google 导入带有分隔符类型的 CSV 自动检测的方式
- jquery - 通过 jquery 打开时,模式没有关闭
- python - DRF 将 URL 参数传递给序列化程序
- ajax - 我的表单没有插入,即使它产生“成功”消息
- bash - For 循环函数在 while 循环中不起作用
- php - 我的 PHP 到 mysql 中的数据冗余问题
- fortify - MyEclipse + Fortify 修复 + 扫描 JSP 文件