【发布时间】:2014-01-28 15:52:42
【问题描述】:
我正在尝试在 SQLite 中执行值的累积总和。我最初只需要对单个列求和并有代码
SELECT
t.MyColumn,
(SELECT Sum(r.KeyColumn1) FROM MyTable as r WHERE r.Date < t.Date)
FROM MyTable as t
Group By t.Date;
效果很好。
现在我想将其扩展到更多列 KeyColumn2 和 KeyColumn3 说。与其添加更多 SELECT 语句,我认为最好使用连接并编写以下内容
SELECT
t.MyColumn,
Sum(r.KeyColumn1),
Sum(r.KeyColumn2),
Sum(r.KeyColumn3)
FROM MyTable as t
Left Join MyTable as r On (r.Date < t.Date)
Group By t.Date;
但是,这并没有给我正确的答案(相反,它给出的值比预期的要大得多)。为什么会这样?我该如何更正JOIN 以给我正确的答案?
【问题讨论】:
-
请发布正确的代码。在加入和求和之前,“SELECT T.* ... GROUP BY T.DATE”不可能工作,因为您只按日期分组,其他字段可能不同。
-
是的,我写这个只是为了清楚地表明
SELECT也将依赖于原始表。但是这是不正确的,所以我会改变。但我认为这与实际问题无关。