首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

字符串+ 聚合函数? 帮忙写个SQL语句,或者给予一个解决办法

2012-01-24 
字符串+ 聚合函数?帮忙写个SQL语句,或者给予一个解决方法,存在一个表表名:t_example字段:meetingid,joiner

字符串+ 聚合函数? 帮忙写个SQL语句,或者给予一个解决方法,
存在一个表  
表名:t_example
字段:meetingid,           joiner
类型:varchar(10),         varchar(10)
数据:1000                         李梅
            1000                         王俊
            1000                         张风
            1001                         哗啦啦
            1001                         王俊
想要的输出结果是:
            1000                         李梅王俊张风
            1001                         哗啦啦王俊
这样子最好了:
            1000                         李梅,王俊,张风
            1001                         哗啦啦,王俊

应该怎么做呢??

[解决办法]
declare function fun_test(@cid varchar(2000))
returns varchar(2000)
as
begin
declare @chr varchar(2000)
set @chr= ' '
select @chr=@chr+joiner+ ', ' from 表 where meetingid=@cid
return @chr
end

select distinct meetingid,dbo.fun_test(meetingid) from 表
[解决办法]
create table t_example(meetingid varchar(10),joiner varchar(10))
insert t_example select '1000 ', '李梅 '
union all select '1000 ', '王俊 '
union all select '1000 ', '张风 '
union all select '1001 ', '哗啦啦 '
union all select '1001 ', '王俊 '

--写一个聚合函数:
create function dbo.fn_Merge(@meetingid varchar(1000))
returns varchar(8000)
as
begin
declare @name varchar(8000)
set @name= ' '
select @name=@name+ ', '+joiner from t_example where meetingid=@meetingid
return stuff(@name,1,1, ' ')
end
go

-- 调用函数
select meetingid, dbo.fn_Merge(meetingid) from t_example group by meetingid
[解决办法]

create table t(meetingid int,joiner varchar(100))


insert into T select 1000, '李梅 '
insert into T select 1000, '王俊 '
insert into T select 1000, '张风 '
insert into T select 1001, '哗啦啦 '
insert into T select 1001, '王俊 '

select * from T

go
--写一个聚合函数:
create function dbo.fn_Merge(@id int)
returns varchar(8000)
as
begin
declare @r varchar(8000)
set @r= ' '
select @r=@r+ '; '+joiner from T where meetingid=@id
return stuff(@r,1,1, ' ')
end
go

-- 调用函数
select meetingid, dbo.fn_Merge(meetingid) as joiner from T group by meetingid

go

drop function fn_Merge


drop table T

热点排行