我有一个名为Assignment
的2列表。表中包含的人(nvarchar(20)
)和天(date
)的分配,喜欢这里:在SQL Server中汇总日期
Person Day
------------------
John 2011-05-23
John 2011-05-24
John 2011-05-25
John 2011-05-27
John 2011-05-28
John 2011-05-29
Anna 2011-05-02
Anna 2011-05-03
Anna 2011-05-06
我需要提取的日期范围时出现的相邻天的序列。输出应该是每行一个字符串值:
------------------
John 2011-05-23 - 2011-05-25
John 2011-05-27 - 2011-05-29
Anna 2011-05-02 - 2011-05-03
Anna 2011-05-06 - 2011-05-06
我试过分组,然后
CAST(min(Day) AS VARCHAR) + ' - ' + CAST(max(Day) AS VARCHAR)
,但它不能正常工作。
欢迎任何建议。 谢谢。
这个答案可以适应你的表格。 http://stackoverflow.com/questions/6099279/need-help-finding-the-correct-t-sql-query/6099433#6099433 – 2011-06-02 21:12:30
@Mikael埃里克森谢谢你的工作,请写你的评论作为答案,我会接受。 – Func 2011-06-02 21:28:26
从上面提到的答案...;与Cte作为( 选择*,DATEDIFF(D,0,A.Day) - ROW_NUMBER()OVER(由A.Person ORDER BY A.Day划分)来自作业A的Grp ) 从人Cte 中选择Person,MIN(Day),MAX(Day),Grp – 2011-06-02 21:30:37