我有四列,参考,日期,金额和运行总额,并且我一天有多条记录,并且我尝试按日期分组,所以我只能看到一个包含所有金额和运行总额的日期。 / p>
我主要尝试以不同的方式将其分组在一起,但按我的预期无法正常工作。
SELECT [REF], [DATE], [AMOUNT], SUM(AMOUNT) OVER (PARTITION BY [DATE] ORDER BY [REF]) AS 'Running Total' FROM stageRecords
WHERE [Accounts] != ''
GROUP BY [REF], [DATE], [AMOUNT]
一些数据如下:
ref - date - amount - running total
1283 2018-04-23 -6769.13 338.46
1284 2018-04-23 -338.46 5.6843418860808E-14
109 2018-05-22 12328.58 12328.58
110 2018-05-22 616.43 12945.01
501 2018-05-22 -12328.58 616.43
希望查看具有单个日期的记录,并计算出金额和运行总额。
答案 0 :(得分:0)
从汇总中删除Amount
,而是使用SUM(AMOUNT)
作为要与第二个SUM
用作分析函数求和的数量。
SELECT
[REF],
[DATE],
SUM(SUM(AMOUNT)) OVER (PARTITION BY [DATE] ORDER BY [REF]) AS 'Running Total'
FROM stageRecords
WHERE [Accounts] != ''
GROUP BY [REF], [DATE];
上面的查询很有意义,因为分析函数是基于集合的,并且在GROUP BY
聚合之后 进行评估。当聚合结束时,SUM(AMOUNT)
可用,因此没有理由不能将其用作分析函数的输入。
答案 1 :(得分:0)
您似乎想要:
SELECT sr.[DATE],
SUM(SUM(AMOUNT)) OVER (ORDER BY [DATE]) AS Running_Total
FROM stageRecords sr
WHERE Accounts <> ''
GROUP BY [DATE]
ORDER BY [DATE];
如果您希望每个日期显示一行,则该行应该是GROUP BY
中的唯一列。