我正在使用sql调用创建数据表:

 SqlDataAdapter Adp = new SqlDataAdapter("select CONVERT(DATETIME, IncDate, 103) AS IncDate, SUM(IncCost) AS IncCost from Incomings GROUP BY CONVERT(DATETIME, IncDate, 103) ORDER BY CONVERT(DATETIME, IncDate, 103)", con);


目前输出

03/04/2016 - 13
05/04/2016 - 26
08/04/2016 - 5
13/04/2016 - 16
23/04/2016 - 23


我想知道如何更改我的SQL查询,以便将每个费用都添加到上一个费用(即运行总额)中。这看起来像

03/04/2016 - 13
05/04/2016 - 39
08/04/2016 - 44
13/04/2016 - 60
23/04/2016 - 83


到目前为止,仍然没有可行的解决方案,并且不确定如何解决。提前致谢!

最佳答案

您可以尝试此操作并根据需要进行调整。如果在SSMS中执行此操作,则更容易看到正在发生的事情。

SELECT MyTable.IncDate AS IncDate, SUM(MyTable.IncCost) OVER (ORDER BY MyTable.IncDate) AS IncCost FROM
(
SELECT
    CONVERT(DATETIME, IncDate, 103) AS IncDate,
    SUM(IncCost) AS IncCost
FROM
    Incomings
GROUP BY CONVERT(DATETIME, IncDate, 103)
) AS MyTable
ORDER BY MyTable.IncDate


说明:内部的SELECT语句使我们能够进行分组并进行所有设置,从而使数据具有所需的格式。然后,我们像表一样使用内部选择进行SUM和OVER,这使我们能够获得运行总计。

10-08 16:17