日期:2014-05-18 浏览次数:20418 次
create function wsp(@id int) returns varchar(50) as begin declare @sql varchar(8000) select @sql=isnull(@sql+'/','')+value from lo where id=@id return @sql end 调用函数: select distinct id,dbo.wsp(id) [value] from A
------解决方案--------------------
CREATE TABLE #Tab ( id int,value varchar(10) ) insert into #Tab select 0, 'a' union all select 0, 'b' union all select 0, 'c' union all select 1, 'b' union all select 1, 'c' select * into # from #tab order by id declare @col1 varchar(100),@col2 varchar(1000) update # set @col2=case when @col1=id then @col2+'/'+value else value end,@col1=id,value=@col2 select id,max(value) as value from # group by id drop table #
------解决方案--------------------
你可以参考如下: /* 有表tb, 如下: id txt ----- ------ 1 aa 1 bb 2 aaa 2 bbb 2 ccc 需要得到结果: id values ------ ----------- 1 aa,bb 2 aaa,bbb,ccc 即: group by id, 求 txt 的和(字符串相加) */ create table tb(id int,txt varchar(100)) go insert into tb select 1,'aaa' union all select 1,'bbb' union all select 2,'ccc' union all select 3,'ddd' union all select 3,'eee' union all select 3,'fff' go --写一个聚合函数: create function dbo.fn_Merge(@id int) returns varchar(8000) as begin declare @r varchar(8000) set @r='' select @r=@r+';'+txt from tb where id=@id return stuff(@r,1,1,'') end go -- 调用函数 select id, dbo.fn_Merge(id) as txt from tb group by id go drop table tb drop function fn_Merge