我在这里问了一个类似的问题:
sql sum a column and also return the last time stamp
事实证明我的用例不正确,所以我需要调整我的问题。
我在SQL Server中有一个包含多个列的表。相关的是:
name
distance
create_date
我有许多人通过名字确定,每隔几天他们就会走一段距离。例如:
name distance create_date
john 15 09/12/2014
john 20 09/22/2014
alex 10 08/15/2014
alex 12 09/05/2014
alex 20 09/12/2014
john 8 09/30/2014
alex 30 09/14/2014
mike 12 09/10/2014
我需要的查询有3个参数:
@start_date
@end_date
@count
我需要一个在两个日期之间的查询,为每个人返回距离。但诀窍在于,对于每个人,我应该总计超过@count中指示的金额,并返回达到的日期,或者如果该人没有通过@count,则返回总和和最后的进入日期。例如,如果我使用参数:
@start_date=08/01/2014
@end_date=09/25/2014
@count=35
我希望如下:
name distance create_date
alex 42 09/12/2014
john 35 09/22/2014
mike 12 09/10/2014
有人对此有所了解吗?
谢谢!
答案 0 :(得分:1)
根据我的理解,查询特定计数的人
select A.name,sum(A.distance),A.create_date from (select name,distance,create_date
from table where create_date between @start_date and @end_date)A group by A.name,A.create_date
having sum(A.distance)>@count
那些不交叉的人
select A.name,sum(A.distance),max(A.create_date) from (select name,distance,create_date
from table where create_date between @start_date and @end_date)A group by A.name
having sum(A.distance)<@count