Пожалуйста, попробуйте следующий запрос.
select [a1], [a1&a2],[a2]
from
(
SELECT DISTINCT t2.c2 AS C2,COUNT(*) as col FROM Table1 t1
inner join Table1 t2 ON t1.c1=t2.c1 GROUP BY t2.c2,t2.c1 HAVING COUNT(*)<2
UNION ALL
select distinct
LTRIM(REPLACE(REPLACE(stuff((SELECT distinct '& ' + cast(c2 as varchar(10))
FROM Table1 t2
where t2.c1 = t1.c1
FOR XML PATH('')),1,1,''),'& ','&'),'amp;','')) AS C2,Count(*) as col
from Table1 t1 group by c1 HAVING COUNT(*)>1
) d
pivot
(
max(col)
for c2 in ([a1],[a1&a2] ,[a2])
) piv;