我有一个包含以下列的表:
timestamp | value | desc
数据示例:
2014-01-27 10:00:00.000 | 100 | 101
2014-01-27 10:00:00.000 | 105 | 101
2014-01-27 11:00:00.000 | 160 | 101
2014-01-27 12:00:00.000 | 200 | 101
...
...
2014-01-28 10:00:00.000 | 226 | 101
2014-01-28 10:00:00.000 | 325 | 101
2014-01-28 11:00:00.000 | 145 | 101
我想要获得的是按小时部分分组但没有合并期间隔。 所以结果将是这样的(在选择中我将传递日期间隔和描述条件,如desc ='101':
结构:
hour | count
数据:
10 | 2 (referring to the 20140127)
11 | 1 (referring to the 20140127)
12 | 1 (referring to the 20140127)
...
...
10 | 2 (referring to the 20140128)
11 | 1 (referring to the 20140128)
我想过使用光标,但我想知道是否有可能在没有它的情况下实现这个结果。
我正在使用 SQL server 2012 SP1 。
感谢您的关注。
再见 F。
答案 0 :(得分:1)
您可以使用此功能。这应该工作
SELECT DATEPART(hh,timestamp), COUNT(*)
FROM tablename
GROUP BY
DATEPART(hh,timestamp),
DATETIMEFROMPARTS (YEAR(timestamp),MONTH(timestamp),DAY(timestamp),0,0,0,0,0),
desc HAVING desc ='yourvalue'
答案 1 :(得分:1)
试试这个: -
SELECT Count(*) AS [Count],
Datepart(hour, timestamp) AS [Hour]
FROM yourtable
GROUP BY CONVERT(DATE, timestamp),
Datepart(hour, timestamp)
ORDER BY CONVERT(DATE, timestamp)