有没办法直接用sql把第一列相同的数据,第二列不同的用“,”连接起
比如
KEY VALUE
1 "A"
2 "B"
1 "C"
1 "D"
用sql语句查询出来后,能不能直接显示成
KEY VALUE
1 "A,C,D"
2 "B"
我在其他地方看到可以直接写个函数来调用,但不直到可否直接sql语句实现同样的功能
create function [dbo].[f_str](@id int) returns nvarchar(1000)
as
begin
declare @str nvarchar(1000)
set @str = ''
select @str = @str + ',' + cast(value as nvarchar(900)) from tb where id = @id
set @str = right(@str , len(@str) - 1)
return @str
end
go
--调用函数
select id , value = dbo.f_str(id) from tb group by id
------解决方案--------------------发错论坛了吧,转到SQLSERVER那边问问。
Oracle这边可以用wm_concat, pivot或者decode之类的函数实现。
http://blog.csdn.net/yy_mm_dd/article/details/3182953
------解决方案--------------------wm_concat() group by
------解决方案--------------------create table tt(
KEY INT,
VALUE VARCHAR(20)
);
insert into tt values(1,'A');
insert into tt values(2,'B');
insert into tt values(1,'C');
insert into tt values(1,'D');
COMMIT;
SELECT tt.key, WMSYS.WM_CONCAT(tt.VALUE) VALUE From tt GROUP BY tt.key;