MinDate       MaxDate       Category  
2014-01-01    2014-01-03       A  
2014-01-04    2014-01-10       B  
2014-01-11    2014-01-20       A  

注意:使用

Select min(date), max(date), category from TABLE Group by category  

将会产生这样的结果

MinDate MaxDate Category  
2014-01-01 2014-01-20 A  
2014-01-04 2014-01-10 B  

这不是我想要的结果

3 个评论
你使用的是什么数据库?
只有两个类别,但有三个结果。你的意思是每个连续的(按日期)类别有一次吗?
Alex
正是如此,我在我的问题上加了一个注释
sql
sql-server
sql-server-2008
tsql
Alex
Alex
发布于 2014-08-28
1 个回答
Lennart
Lennart
发布于 2014-08-28
已采纳
0 人赞同

假设你有一个支持窗口函数的DBMS,你可以做到这一点。

select category, grp, min(date) as min_date, max(date) as max_date
from (
    select category, date
         , row_number() over (order by date) 
         - row_number() over (partition by category order by date) as grp
    from T
) as X