I've a table in which data is like this for single user
ID - Number - SubNumber - Name
1   101        201101     Jack
2   101        201102     Jack
3   101        201103     Jack
4   101        201107     Jack
5   101        201111     Jack
6   101        201112     Jack
7   101        201113     Jack
8   101        201161     Jack
9   101        201162     Jack
10  101        201163     Jack
11  101        201164     Jack
12  101        201165     Jack
I want to get records like this without using any kind of loop.
Number - Name - SubNumber
101     Jack    (201101-201103, 201107, 201111-201113, 201161-201165)
Currently I'm able to get records in form of this
Number - Name - SubNumber
101     Jack   (201101,201102,201103, 201107, 201111,201112,201113, 201161,201162,201163,201164,201165)
Query to get upper result is
SELECT  Number, Name
,STUFF((SELECT ', ' + CAST(SubNumber AS VARCHAR(50)) [text()]
     FROM [Table] 
     WHERE Number= t.Number
     FOR XML PATH(''), TYPE)
    .value('.','NVARCHAR(MAX)'),1,2,' ') SubNumber
FROM [Table] t
GROUP BY Number,Name
having Number= '101'
Am totally stuck over here. Any kind of help will be appreciated.
 
     
    