Как говорили многие другие, способ хранения данных - это очень плохая практика и почти наверняка вызовет гораздо больше головной боли в будущем.
Тем не менее, если вы действительно не можете это изменить, есть еще варианты для вас. В SQL Server 2017 у вас есть преимущества string_split
и string_agg
:
declare @t table(ID int, val varchar(40))
insert into @t values
(1,'100,200')
,(2,'100,100,200')
,(3,'200,200,300')
,(4,'200,200,300');
with s as
(
select distinct t.ID
,s.[value] as val
from @t as t
cross apply string_split(t.val,',') as s
)
select s.ID
,string_agg(s.val,',') as val
from s
group by s.ID;
Вывод
+----+---------+
| ID | val |
+----+---------+
| 1 | 100,200 |
| 2 | 100,200 |
| 3 | 200,300 |
| 4 | 200,300 |
+----+---------+