表tb,2个字段:
AA varchar(20),BB varchar(20)数据内容:
A 张三
B 李四
C 王五
A 赵六
A 小三
B 王八
C 小蜜
A 张三...求结果:
AA  BB
------------------
A 张三,赵六,小三
B 李四,王八
C 王五,小蜜说明:1.AA,BB存在相同的只取一次,如上面的 A 张三
     2.结果BB不考虑顺序,如张三,赵六,小三 也可以排成赵六,小三,张三
     3.结果按AA排序

解决方案 »

  1.   


    declare @tb table(AA varchar(20),BB varchar(20))
    insert @tb
    select 'A','张三'
    union all
    select 'B', '李四'
    union all
    select 'C','王五'
    union all
    select 'A','赵六'
    union all
    select 'A','小三'
    union all
    select 'B','王八'
    union all
    select 'C','小蜜'
    union all
    select 'A','张三'
    select AA, stuff((select distinct ',' + BB from @tb b where a.AA = b.AA for xml path('')),1,1,'') BB from @tb a
    group by AA
      

  2.   


    --TRYdeclare @tb table (id nvarchar(10),name nvarchar(10))
    insert into @tb select 'A','张三'
          union all select 'B','李四'
          union all select 'C','王五'
          union all select 'A','赵六'
          union all select 'A','小三'
          union all select 'B','王八'
          union all select 'C','小密'
          union all select 'A','张三'
    SELECT  ID AA, BB=STUFF((SELECT DISTINCT ','+ NAME FROM @TB WHERE A.ID=ID  FOR XML PATH ('')),1,1,'')
                      FROM  @TB A GROUP BY ID
    /*
    AA         BB
    ---------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    A          小三,张三,赵六
    B          李四,王八
    C          王五,小密
    */