计算唯一ID上多行之间的时差

时间:2015-04-27 14:36:52

标签: sql sql-server sql-server-2008

我的数据如下所示:

ID          EventDateTime
1656891     2015-04-21 23:54:36.443
1656891     2015-04-22 00:28:01.313
1656891     2015-04-23 16:09:55.440
1656891     2015-04-26 19:17:30.140
1656891     2015-04-26 21:50:45.167
1668876     2015-04-23 13:28:27.827
1668876     2015-04-23 15:57:15.393
1718737     2015-04-16 11:27:17.143
1743848     2015-04-16 03:15:50.900
1743848     2015-04-16 11:28:09.383
1743848     2015-04-21 17:32:47.610
1743848     2015-04-22 01:06:22.707
1746479     2015-04-16 18:36:26.587
1746479     2015-04-18 16:04:12.410
1746479     2015-04-20 21:01:50.907
1746479     2015-04-20 23:26:56.743

对于给定的SELECT,我需要DATEDIFF(MINUTE...) EventDateTimeID 1656891。例如,对于7076,我应该ID。有没有办法计算每个ID Minutes 1656891 7076 ... ... 的这个,这样我得到一个输出:

return p->a[--p->top];

我发现了一些关于迭代的其他帖子,但查询最终花了一分钟才能运行,所以我的代码显然效率很低。

1 个答案:

答案 0 :(得分:1)

我猜你想要每个id的最早值和最新值之间的分钟差异。至少在价值7076的球场上。

select id, datediff(minute, min(eventdatetime), max(eventdatetime) ) as minutes
from table t
group by id;