0

我有两列的表:日期和点。我想创建一个查询,该查询将返回包括今天在内的所有天的点总和。这是为了生成一个积分图表,直到今天。

编辑:我认为在 ews 编辑之前我的问题更清楚:)

有了这样的数据

2012-01-01 1
2012-01-02 1
2012-01-02 2 同日(我们一天可以有很多记录,你可以认为是当天一场比赛的结果)
2012-01-03 -1

我想看看结果:

2012-01-01 1
2012-01-02 4 (1+1+2)
2012-01-03 3 (1+1+2-1)

我正在使用 SQL Server 2008。如果您知道如何在 LINQ to Entities 中进行操作,那就太好了。

4

4 回答 4

5

如果你需要累积,你应该试试这个:

编辑:

SELECT 
Date,
(SELECT SUM(Point) FROM A WHERE Date <= MainTable.Date) AS Points
FROM A MainTable
GROUP BY Date

这是一个SQL Fiddle来测试它。

于 2012-09-10T21:03:45.367 回答
2

一些 DBMS 通过使用窗口函数有更好的方法来做到这一点,但这里有一个查询应该适用于大多数 SQL 数据库:

SELECT t1.date,
       SUM(t2.points) AS points_to_date
  FROM table_name t1
  JOIN table_name t2
    ON t2.date <= t1.date
 ORDER
    BY t1.date
;
于 2012-09-10T21:05:03.930 回答
0

我知道这样做的唯一方法是每天都有一个新查询。

dateVariable = "2012-09-06"
SELECT Sum(points) From table_name WHERE Date<=dateVariable;

显然,您需要遍历所有天来执行此操作,每次都更改 dateVariable。

于 2012-09-10T21:02:19.453 回答
0

我从你想要一个连续的积分总和的问题中了解到,这样每个日期的所有日期的总和都小于该日期。如果是这样,请查看本文的运行总计部分。

于 2012-09-10T21:03:58.500 回答