该查询应该是什么? 2

时间:2013-09-17 06:41:50

标签: sql sql-server-2008

我想从

中选择记录
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查询?

1 个答案:

答案 0 :(得分: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不支持窗口函数,那就复杂得多。

Fiddle

提供的

jyparask