См. Следующий код SQL.Как группировать таблицу, сохраняя при этом все значения столбцов в каждой группе в один столбец как значения, разделенные запятыми
Declare @LookUp table (id int,val varchar(12))
insert into @LookUp values (1,'A'),(1,'D'),(1,'X'),(2,'B'),(2,'F')
Declare @summary table (id int,val varchar(2000))
------------------------------
Declare @value varchar(30)
Declare @start int = 1, @end int = (Select count(Distinct id) from @LookUp)
While @start <= @end
Begin
Set @value = ''
Select @value = @value + '|' + val From @LookUp Where id = @start
Insert into @summary
Select @start,Right(@value,Len(@value)-1)
Set @start = @start + 1
End
Select * From @summary
с помощью следующего запроса, я группировка на основе кода, и сделать значения с в группе, в качестве значений, разделенных запятой.
Вход:
Выход:
Я сделал это с помощью цикла, который не выполняет очень хорошо, когда речь идет о большом количестве данных.
Можем ли мы сделать это, избегая петли?
Примечание: Предположим, что @ lookup.id является непрерывным.
Возможный дубликат [Как использовать GROUP BY для конкатенации строк в SQL Server?] (Http://stackoverflow.com/questions/273238/how-to-use-group-by-to-concatenate-strings- in-sql-server) – jpw