declare @digits table (id int,value int )
insert @digits values (1,80),(1,90),(1,100),(1,200),(1,210),(1,9),(1,10),(1,12),
(2,8),(2,9),(2,11),(2,12),
(3,2),(3,4),(3,5),(3,7)
select distinct id,stuff(convert(varchar(max),
(
select
',' + case
when min(value) = max(value) then convert(varchar(10), min(value))
else convert(varchar(10), min(value)) + '-' + convert(varchar(10), max(value))
end
from (select row_number() over (partition by id order by id,value) as seq, value,id from @digits) data
where data.id = s.id
group by (value/10) - seq
for xml path('')
)), 1, 1, '') as result from @digits s