求一条SQL语句,应该有点难度吧!
有表 
 a                                    b 
 ---------------- 
 111                              m 
 111                              s 
 222                              i 
 222                              c 
 222                              b 
 现在我有写一个方法选出这样的数据, 
 111                              m-s 
 222                              i-c-b 
 就是我选出每一个a对应的b列都一一列出来,中间用横线隔开! 
 我本来想写个函数 
 select   @b=b   where   a= '111 '这样子的.但是好象只能返回一个数据吗?不知道怎么弄了,大家来帮帮我吧
------解决方案--------------------create table string(a varchar(10), b varchar(10)) 
 insert string select  '111 ',  'm ' 
 union all select  '111 ',  's ' 
 union all select  '222 ',  'i ' 
 union all select  '222 ',  'c ' 
 union all select  '222 ',  'b ' 
 go 
 create function getString(@s varchar(100)) 
 returns varchar(100) 
 as 
 begin 
 	declare @x varchar(100) 
 	select @x=isnull(@x+ '- ', ' ')+b from string where a=@s 
 	return @x 
 end   
 go 
 select a,dbo.getstring(a) from string group by a
------解决方案--------------------a            b 
 ---------------- 
 111          m 
 111          s 
 222          i 
 222          c 
 222          b 
 现在我有写一个方法选出这样的数据, 
 111          m-s 
 222          i-c-b   
 --------------------- 
 用函數吧可以解決     
 create function aa(@id varchar(20)) 
 returns varchar(1000) 
 as 
 begin 
 declare @str varchar(1000) 
 set @str= ' ' 
 select @str=@str+ '- '+b from t where a=@id 
 return stuff(@str,1,1, ' ')   
 end   
 select a,dbo.aa(a) from t   
------解决方案--------------------create function aa(@id varchar(20)) 
 returns varchar(1000) 
 as 
 begin 
 declare @str varchar(1000) 
 set @str= ' ' 
 select @str=@str+ '- '+b from t where a=@id 
 return stuff(@str,1,1, ' ')   
 end   
 select a,dbo.aa(a) from t group by a 
------解决方案--------------------有表tb, 如下: 
 id    value 
 ----- ------ 
 1     aa 
 1     bb 
 2     aaa 
 2     bbb 
 2     ccc   
 需要得到结果: 
 id     values 
 ------ ----------- 
 1      aa,bb 
 2      aaa,bbb,ccc   
 在SQL Server2000中我们处理的方式一般都是用自定义函数去处理: 
 举例如下:   
 create function dbo.f_str(@id int) 
 returns varchar(8000) 
 as 
 begin 
    declare @r varchar(8000) 
    set @r= ' ' 
    select @r=@r+ ', '+value from tb where id=@id 
    return stuff(@r,1,1, ' ') 
 end 
 go   
 select id, values=dbo.f_str(id) from tb group by id      
 在SQL Server2005中,这种统计有了一种新的方法,直接使用语句调用sql2005的函数实现: 
 举例如下:   
 -- 示例数据 
 DECLARE @t TABLE(id int, value varchar(10)) 
 Insert @t Select 1,  'aa ' 
 UNION ALL Select 1,  'bb ' 
 UNION ALL Select 2,  'aaa ' 
 UNION ALL Select 2,  'bbb ' 
 UNION ALL Select 2,  'ccc '   
 -- 查询处理