2009-12-09 55 views
1

我一直在想办法通过SQL查询方式从数据库中检索一些数据。我试图避免以编程方式进行。使用SQL查询帮助

基本上源表是

ID,日期时间,计数

我想要得到的计数的总和为日期时间的该期间内的每个不同ID的定义的时间段。

任何想法的人?

+0

非常感谢您的及时帮助:) – Ablue 2009-12-09 23:56:32

回答

2

尝试这样:

select ID, sum(Count) 
from foo 
where [DateTime] between @beginning and @end 
group by ID; 

这是假设你有两个变量,@beginning@end被类型为DateTime

+0

非常感谢。我没有意识到* group by *。 – Ablue 2009-12-09 23:43:47

+0

正确,但我不会使用BETWEEN,因为它在范围的两端都是包含的。这意味着如果您将范围堆叠在一起,则会将结果完全等于边界条件复制到2个不同的输出中。 – 2009-12-09 23:59:26

3
you want a GROUP BY for this 

select ID, sum(Count) as Sum 
from yourTable 
where DateTime between startDate and endDate 
group by ID 
1
SELECT ID, SUM(Count) 
FROM yourTable 
WHERE DateTime => '2009-10-01' AND DateTime < '2009-11-01' 
GROUP BY ID; 
2

日期,你应该使用> =和<,使用周期的开始和下一个周期的开始,像这样:

WHERE [DateTime] >= @StartPeriod AND [DateTime] < @StartNextPeriod 

..making全事情:

SELECT ID, SUM(Count) AS Cnt 
FROM dbo.someTable 
WHERE [DateTime] >= @StartPeriod AND [DateTime] < @StartNextPeriod 
GROUP BY ID; 

否则,您运行丢失的东西或包括太多的风险。