为了示例,我有一个包含不同列的事务表,我只保留相关的问题。
我的表:事务
id TransactionTime idClient
---------------------------------------------
1 2019-05-29 09:37:30.000 1531201523215
1 2019-05-29 09:37:30.000 1531201523215
2 2019-05-29 10:20:06.000 1531201523215
3 2019-05-29 10:45:19.000 1531201523215
4 2019-05-29 10:50:19.000 1531201523215
5 2019-05-29 10:51:43.000 1531201523215
6 2019-05-29 10:57:36.000 1531201523215
6 2019-05-29 10:57:36.000 1531201523215
7 2019-05-30 10:07:14.000 1531201523215
8 2019-05-30 10:37:12.000 1531201523215
9 2019-05-30 10:38:11.000 1531201523215
10 2019-05-30 10:46:17.000 1531201523215
我想要实现的是在 30 分钟内对行进行分组,所需的输出是
id TransactionTime idClient Count
----------------------------------------------------------
1 2019-05-29 09:37:30.000 1531201523215 2
2 2019-05-29 10:20:06.000 1531201523215 2
4 2019-05-29 10:50:19.000 1531201523215 4
7 2019-05-30 10:07:14.000 1531201523215 2
9 2019-05-30 10:38:11.000 1531201523215 2
我尝试使用:
SELECT ROW_NUMBER() OVER (
PARTITION BY tl.idClient
,(dateadd(minute, (datediff(second, 0, tl.TransactionTime) / 60 / 30) * 30, 0)) ORDER BY tl.idClient
,tl.TransactionTime
) AS filter_row
但我无法实现我想要的......现在被困了4天......请帮助。