USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL
DROP TABLE t
GO
CREATE TABLE t(
d DATETIME,
score INT
)
INSERT INTO t(d,score)
SELECT '20180101',3
UNION SELECT '20180102',15
UNION SELECT '20180103',8
UNION SELECT '20180104',16
UNION SELECT '20180105',9
UNION SELECT '20180107',11
UNION SELECT '20180108',33
UNION SELECT '20180109',2
UNION SELECT '20180110',13
UNION SELECT '20180112',4
UNION SELECT '20180114',26
UNION SELECT '20180116',3
UNION SELECT '20180117',3
UNION SELECT '20180119',23
UNION SELECT '20180120',75
UNION SELECT '20180123',2
UNION SELECT '20180128',4
UNION SELECT '20180129',1
UNION SELECT '20180130',3
GO
--中间表
with cet as(
select *,
rowno = ROW_NUMBER() over(order by d) - (ROW_NUMBER() over(order by d) - 1 ) /5 * 5 , --行号
groupid = (ROW_NUMBER() over(order by d) - 1 ) /5 --分组号
from t
)
--显示结果
select Min(d) 日期,MAX(SCORE) 最大值,MIN(SCORE) 最小值,
(select score from cet where groupid = Min(t.groupid) and rowno = min(t.rowno)) 起始值,
(select score from cet where groupid = Min(t.groupid) and rowno = max(t.rowno)) 结束值
from cet t
group by groupid
/* 结果数据
日期 最大值 最小值 起始值 结束值
----------------------- ----------- ----------- ----------- -----------
2018-01-01 00:00:00.000 16 3 3 9
2018-01-07 00:00:00.000 33 2 11 4
2018-01-14 00:00:00.000 75 3 26 75
2018-01-23 00:00:00.000 4 1 2 3
*/