我有一个每1分钟收集一次数据的监控系统。 我想以15分钟的间隔汇总收集的数据。 我用过这个:( DATEPART(分钟,date_report)/ 15)但它不起作用 有什么办法吗? 非常感谢任何帮助!
我目前的查询是:
SELECT DISTINCT fio,date_report, vocheredi,PS
FROM
(
select distinct TempTable.fio,TempTable.date_report, count (distinct id) as vocheredi
,(CASE WHEN TempTable.workgroup LIKE 'Group East' THEN 'East'
WHEN TempTable.workgroup LIKE 'Group west' THEN 'West'
WHEN TempTable.workgroup LIKE 'Group Centre' THEN 'Centre' END) as PS
FROM dbo.TempTable
WHERE
TempTable.fio = 'employee'
and (TempTable.workgroup = 'East'
or TempTable.workgroup = 'west'
or TempTable.workgroup = 'Centre')
GROUP BY TempTable.fio
,(CASE WHEN TempTable.workgroup LIKE 'Group East' THEN 'East'
WHEN TempTable.workgroup LIKE 'Group west' THEN 'West'
WHEN TempTable.workgroup LIKE 'Group Centre' THEN 'Centre' END)
,TempTable.date_report
) table
WHERE
PS = (@ReportParameter2)
GROUP BY
(DATEPART (minute,date_report) / 15 ) ,fio,date_report, vocheredi,PS
ORDER BY date_report DESC
我想让它向我展示一下:
fio, date_report,vocheredi,PS
employee, 16:15:00-16:30:00 , 19,East
答案 0 :(得分:0)
首先,我不想要16:15:00而是16:15:00到16:29:59(或类似的东西)。 我不打算重写整个脚本,但这会在四分之一小时内提供分组
DATEADD(MINUTE,DATEPART(MINUTE,DateReport)%15*-1,DateReport)
了解这一点 DATEPART(MINUTES,DateReport)提供此分钟(1到59) %或mod函数表示从偶数15开始剩余的分钟数。
DATEADd将其缩小以获得开始的四分之一小时。