我有两列的表:日期和点数。我想创建一个查询,它将返回所有日期的点数总和,包括今天。这是为了生成一个积分图表,直到今天。
编辑:我认为在ews编辑之前我的问题更清楚了:)
使用类似的数据
2012-01-01 1 2012-01-02 1 2012-01-02 2 same day as above (we can have many records for one day, you can think of it as a result of one game on that day) 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中做到这一点,那就太棒了。
答案 0 :(得分:5)
如果你需要累积,你应该试试这个:
修改强>
SELECT
Date,
(SELECT SUM(Point) FROM A WHERE Date <= MainTable.Date) AS Points
FROM A MainTable
GROUP BY Date
这是一个SQL Fiddle来测试它。
答案 1 :(得分: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
;
答案 2 :(得分:0)
我知道这样做的唯一方法是每天都有一个新查询。
dateVariable = "2012-09-06"
SELECT Sum(points) From table_name WHERE Date<=dateVariable;
显然,您需要在所有日子里进行迭代才能执行此操作,每次都更改dateVariable。
答案 3 :(得分:0)
我从您希望获得一系列积分的问题中理解,以便每个日期都具有小于该日期的所有日期的总和。如果是这样,请查看this article的正在运行的总计部分。