You can do it using FOR XML PATH('')
in the inner query to get all the values of B
for each A
.
select distinct T1.A,
(select STUFF( (select ' ; ' + T2.B
from mytable T2
where T1.A = T2.A
FOR XML PATH('')
), 1, 3, '')) AS B
from mytable T1