SQL group by with concat

时间:2011-02-04 02:51:54

标签: sql tsql sql-server-2000 group-by concat

您好 任何人都可以帮助我以下。我需要编写一个MS SQL语句来实现以下目的:

表1有两列:Column1Column2

table1中的数据看起来像

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 个答案:

答案 0 :(得分:4)

您可以创建一个函数来连接值

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