Sql 多个日期之间的平均时间

Sql 多个日期之间的平均时间,sql,sql-server,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008 R2,假设我们有以下信息: **ref_no, customer, dt_created** SO2553009, CN01806740, 2015-08-20 11:10:51.770 SO2553264, CN01806740, 2015-08-20 14:40:05.260 WW101120264, CN01806740, 2015-08-19 21:55:32.990 这是一个客户的3个订单,代表一个典型的客户配置文件 我需要使用datediff?计算3*datetime字段之间的平均时间,

假设我们有以下信息:

**ref_no, customer, dt_created**
SO2553009, CN01806740, 2015-08-20 11:10:51.770
SO2553264, CN01806740, 2015-08-20 14:40:05.260
WW101120264, CN01806740, 2015-08-19 21:55:32.990
这是一个客户的3个订单,代表一个典型的客户配置文件

我需要使用datediff?计算3*datetime字段之间的平均时间,以天为单位,因为请求信息的部门想知道订单之间的平均时间

如果无法在SQL中完成此操作,我将尝试在SSRS中处理信息,但正在运行的报告已经有多个数据集,因此我希望在SQL中完成大部分工作,以改善用户体验

这是SQL 2008 R2,所以我知道LEAD&ROW_NUMBER之类的高级函数不可用,因为我在其他线程中发现它们会问类似的问题

这不是一个固定的数字。可以有任意数量的订单,尽管整个查询将只查看订单>1的订单,因此不必担心与空值进行比较。 如果您在table1 date 如果您在table1 date 订单之间的平均时间是最大值和最小值之间的差值除以小于计数的1

要得到天数,你可以除以24。

你不需要铅。只需使用最大值和最小值:

订单之间的平均时间是最大值和最小值之间的差值除以小于计数的1


天,你可以除以24。

无关,但是你应该考虑升级到一个支持的SQL Server版本。它在我们的路线图上,在今年晚些时候/下一个到2016年,但是公平地说,SQL 2008 R2还没有正式命中生命的尽头。在2008 R2中是否有RoSQL号可用?我想是的,好像是,我们被困在那个版本上。无关,但是你应该考虑升级到一个支持的SQL Server版本。它在我们的路线图上,在今年晚些时候/下一个到2016年,但是公平地说,SQL 2008 R2还没有正式命中生命终结。在2008 R2中是否有RoSQL号可用?我想是的,看起来是的,我们被那个版本卡住了。
SELECT  T1.customer, AVG (CA.delta) as av_gap FROM 
(
SELECT T1.ref_no, T1.customer, T1.dt_created, CA.dt_created , DATEDIFF(day,T1.dt_created,CA.dt_created) as delta  FROM YourTable T1
CROSS APPLY (SELECT TOP 1 T2.dt_created FROM YourTable T2 WHERE T2.dt_created > T1.dt_created AND T1.customer = T2.customer ORDER BY T2.dt_created ASC ) CA
) IQ
GROUP BY IQ.T1.customer
select customer,
       datediff(hour, min(dt_created), max(dt_created)) / nullif(count(*) - 1, 0) as avg_diff_hours
from t
group by customer;