0

我想从中选择记录

ID     DATE

1    2013-07-01
2    2013-07-02 
3    2013-07-03
4    2013-07-05
5    2013-07-06
6    2013-07-08
7    2013-07-10
8    2013-07-11
9    2013-07-12

结果如下:

DATE

2013-07-01 to 2013-07-03
2013-07-05 to 2013-07-06
2013-07-08
2013-07-10 to 2013-07-12

因此,如果日期是连续的,如 1-2-3,则选择 1-3。

什么是 sql 查询?

4

1 回答 1

2

您正在尝试标准化日期系列?

这是我在 datecol 唯一时使用的:

SELECT
  MIN(datecol) AS StartVal,
  MAX(datecol) AS EndVal,
  COUNT(*) AS #IDs
FROM
 (
  SELECT
    datecol - ROW_NUMBER() OVER (ORDER BY datecol ASC) AS grp,
    datecol
  FROM tab
 ) dt
GROUP BY grp
ORDER BY 1

如果您的 DBMS 不支持窗口函数,那就更复杂了。

小提琴jyparask提供

于 2013-09-17T06:50:00.740 回答