Один из вариантов - сделать это с помощью рекурсивного параметра и курсора.Попробуйте выполнить этот запрос:
DECLARE @Name varchar(50), @Role varchar(MAX), @Dept varchar(50)
DECLARE role_cursor CURSOR FOR
SELECT Name,min(Dept)
FROM [dbo].[Table_1]
group by Name
OPEN role_cursor;
FETCH NEXT FROM role_cursor
INTO @Name, @Dept
WHILE @@FETCH_STATUS = 0
BEGIN
set @Role = ''
select @Role = @Role+[Role]+','
FROM [dbo].[Table_1]
where Name=@Name
select @Name,left(@Role,len(@Role)-1),@Dept
FETCH NEXT FROM role_cursor
INTO @Name, @Dept
END
CLOSE role_cursor;
DEALLOCATE role_cursor;
Получив его, вы можете использовать вставку перед выбором, чтобы вставить значения в таблицу результатов