问题描述
我正在使用带模式的表(简化):
CREATE TABLE [Test]
(
CaptureTime DATETIME,SnapShotValue INT,Id INT
);
具有以下30分钟的数据:
我想计算每个HH:00小时数据的平均值,取HH:30和HH + 1:00值并将其PIVOT。对于上面的测试数据:
我要开始here,如何将值HH:00的时间分组?数据取值HH:30和HH + 1:00以及Pivot?谢谢!
解决方法
如果我正确地跟随了您,则可以将捕获时间偏移30分钟,然后删除这些分钟,最后进行条件聚合:
select dateadd(minute,- datepart(minute,v.capturetime),v.capturetime) capture_time,avg(case when id = 1 then 1.0 * snapshotvalue end) avg1,avg(case when id = 2 then 1.0 * snapshotvalue end) avg2
from test t
cross apply (values (dateadd(minute,- 30,capturetime))) v(capturetime)
group by dateadd(minute,v.capturetime)