Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 找出至少连续发生3天(数值)的周期_Sql Server - Fatal编程技术网

Sql server 找出至少连续发生3天(数值)的周期

Sql server 找出至少连续发生3天(数值)的周期,sql-server,Sql Server,我必须找出至少连续3天出现值的时间段 该表如下所示: Dates val -------------------- 2002-10-25 0:00 37.8 2002-11-03 0:00 38.4 2002-11-04 0:00 37.2 2002-11-05 0:00 39.1 2002-11-15 0:00 38.6 2002-11-16 0:00 39 2002-11-18 0:00 38.3 2002-11-19 0:00 38.7 2002-11-20 0:00

我必须找出至少连续3天出现值的时间段

该表如下所示:

Dates           val
--------------------
2002-10-25 0:00 37.8
2002-11-03 0:00 38.4
2002-11-04 0:00 37.2
2002-11-05 0:00 39.1
2002-11-15 0:00 38.6
2002-11-16 0:00 39
2002-11-18 0:00 38.3
2002-11-19 0:00 38.7
2002-11-20 0:00 39.7
2002-11-21 0:00 39.2
2002-11-22 0:00 39.6
2002-11-23 0:00 38.5
2002-11-28 0:00 37.5
2003-10-03 0:00 37.1
2003-10-06 0:00 38.1
2003-10-07 0:00 37.6
预期产量为

Daterange                            NoOfDays
---------------------------------------------
2002-11-03 0:00-2002-11-05 0:00          3
2002-11-18 0:00-2002-11-23 0:00          6

您可以通过为日期分配分组id来进行此计算。一个简单的方法是减去一系列的数字——差在一系列的天中是恒定的。然后按此数字进行聚合:

select min(daterange), max(daterange), count(*) as numdays
from (select t.*,
             dateadd(day,
                     - row_number() over (order by daterange),
                     daterange) as grp
      from t
     ) t
group by grp
having count(*) >= 3;

谢谢。如果我不得不忽略1天的间隔怎么办?在这种情况下,这个查询仍然适用吗?@bill。这是另一个问题。你应该问另一个问题。