Sql 如何编写查询求和?
我的表有两列:日期和点。我想创建一个查询,返回包括今天在内的所有天数的积分总和。这是为了生成一张到今天为止的积分表 编辑:我想我的问题在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 如何编写查询求和?,sql,Sql,我的表有两列:日期和点。我想创建一个查询,返回包括今天在内的所有天数的积分总和。这是为了生成一张到今天为止的积分表 编辑:我想我的问题在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 d
我正在使用SQLServer2008。如果您知道如何在LINQ中对实体执行此操作,那就太好了。我知道的唯一方法是每天使用一个新的查询
dateVariable = "2012-09-06"
SELECT Sum(points) From table_name WHERE Date<=dateVariable;
显然,要做到这一点,您需要迭代所有的日子,每次都要更改dateVariable。如果需要累积计算,您应该尝试以下方法: 编辑:
下面是一个测试方法。我从问题中了解到,您需要一个连续的点数总和,以便每个日期的点数总和都小于该日期。如果是这样,请查看的running total部分。一些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
;
换句话说,就是所有点数的总和,或者每天点数的总和?哪个DBMS?PostgreSQL?MySQL?SQL Server?甲骨文?问题现在变了。你需要什么?一个简单的和还是一个运行的和,那么是一个累加的?这是一个程序性的方法。这是我想到的唯一解决办法,但它不好。我甚至不知道如何调用它并返回数据库中所有天数的总和。这是无效的SQL-。我添加了groupby,但它返回了错误的结果。但它还是帮了我一点忙,所以我提高了投票率。@Peri:噢,哇,哇,对不起!我本应该先测试的,如果测试失败,至少会发布一条我没有测试过的免责声明。我编辑了我的问题。每天可能有许多记录。我在您的查询中添加了“按日期分组”,现在就完美了。也许你们知道是否有可能在LINQ中对实体执行此操作?我知道这一定很简单,但我自己找不到解决方案。愚蠢的
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
;