我有一個名爲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