SQL Server:如何根据时间间隔(例如2小时内)按日期时间列进行分组

Moh*_*hit 5 sql t-sql sql-server group-by sql-server-2008

我想根据时间间隔对数据进行分组,让我们说3小时组.如何在数据的时间范围内对数据进行分组.

我的数据就像

DocId,    UserCode,     ProcessCode, ProcessDone
 1            1             10       21/11/2015 11:04:00  
 2            1             10       21/11/2015 12:14:00
 3            1             20       21/11/2015 11:04:00
 4            1             20       21/11/2015 11:54:00
 5            1             30       21/11/2015 13:04:00
Run Code Online (Sandbox Code Playgroud)

例如,在上面的数据中,我想UserCode在一段时间内使用流程对数据进行分组,让我们说10-12.

喜欢

UserCode, Process, Total
   1        10       1
   1        20       2
Run Code Online (Sandbox Code Playgroud)

由于此代码总计数基于10-12之间的时间和分组依据UserCodeProcessCode.

Rob*_*ert 1

试试这个方法:

select UserCode, ProcessCode, count(1) Total
from tab
where   convert(time,ProcessDone) between '10:00' and '12:00'
group by UserCode, ProcessCode 
Run Code Online (Sandbox Code Playgroud)

Sql Fiddle演示

或者

select UserCode, ProcessCode, count(1) Total
from tab
where  DATEPART(hh,ProcessDone) > 10 and DATEPART(hh,ProcessDone) < 12
group by UserCode, ProcessCode 
Run Code Online (Sandbox Code Playgroud)

Sql Fiddle演示

或包括dategroup by

select UserCode, ProcessCode, count(1) Total
from tab
where   convert(time,ProcessDone) between '10:00' and '12:00'
group by UserCode, ProcessCode, convert(date,ProcessDone)
Run Code Online (Sandbox Code Playgroud)

Sql Fiddle演示