2009-12-09 52 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; 

否則,您運行丟失的東西或包括太多的風險。