2011-02-04 252 views
2

嗨 有人可以幫我解決以下問題。我需要寫一個MS SQL statment才達到以下幾點:SQL Group by concat

表1有2列:Column1Column2

數據table1中看起來像

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

我需要我的SQL statment輸出如下

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

所以換句話說,我需要按column1進行分組,並將column2值連接在一起,並用逗號分隔。請注意,這將需要能夠在SQL Server 2000及以上

+0

對不起,我試圖顯示與兩欄(Column1和Column2)的示例表,不知道wh Ÿ它沒有正常結果 – 2011-02-04 02:53:03

回答

4

運行,你可以創建一個函數來Concat的值

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