SQL Group by with concat

妖精的绣舞 提交于 2019-12-08 01:01:48

问题


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


回答1:


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


来源:https://stackoverflow.com/questions/4894095/sql-group-by-with-concat

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!