SQL Group с помощью Concat - PullRequest
       20

SQL Group с помощью Concat

2 голосов
/ 04 февраля 2011

Привет Кто-нибудь может мне помочь со следующим. Мне нужно написать MS MS statment для достижения следующего:

Таблица 1 имеет 2 столбца: Column1 и Column2

Данные в таблице1 выглядят как

Column1   Column2
1         a
1         b
1         c
2         w
2         e
3         x

Мне нужно, чтобы мой Sql-статус выводился следующим образом

Column1   Column2
1         a, b, c
2         w, e
3         x

Другими словами, мне нужно сгруппировать по column1 и объединить значения column2 с запятой. Обратите внимание, что это должно быть в состоянии работать на SQL Server 2000 и выше

1 Ответ

4 голосов
/ 04 февраля 2011

Вы можете создать функцию для конкатенации значений

create function dbo.concatTable1(@column1 int) returns varchar(8000)
as
begin
declare @output varchar(8000)
select @output = coalesce(@output + ', ', '') + column2
from table1
where column1 = @column1 and column2 > ''
return @output
end
GO

Итак, если у вас есть эта таблица

create table table1 (column1 int, column2 varchar(10))
insert table1 select 1, 'a'
insert table1 select 1, 'b'
insert table1 select 1, 'c'
insert table1 select 2, 'w'
insert table1 select 2, 'e'
insert table1 select 3, 'x'
GO

Вы используете ее следующим образом

select column1, dbo.concatTable1(column1) column2
from table1
group by column1
...