SQL Group by with concat
Hi Can anybody help me with the following. I need to write a MS SQL statment to achive the following:
Table1 has 2 columns: Column1
开发者_如何转开发and Column2
Data in table1 looks like
Column1 Column2
1 a
1 b
1 c
2 w
2 e
3 x
I need my Sql statment to output as following
Column1 Column2
1 a, b, c
2 w, e
3 x
So in other words I need to group by column1 and have the column2 values concatenate with comma seperated. Please note this will need to be able to run on SQL Server 2000 and above
You can create a function to concat the values
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
So assuming you had this table
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
You use it like this
select column1, dbo.concatTable1(column1) column2
from table1
group by column1
精彩评论