id   zhi
a     1
a     2
a     2
b     1
b     3结果:
id    zhi
a     1,2,2
b     1,3记得以前做过,很久没做,忘记了。

解决方案 »

  1.   

    WITH test (id, zhi)
     AS ( 
     SELECT 'a', 1
     UNION ALL 
     SELECT 'a', 2
     UNION ALL 
     SELECT 'a', 2
     UNION ALL 
     SELECT 'b', 1
     UNION ALL 
     SELECT 'b', 3)
     
     select a.id,
     stuff((select ','+CONVERT(VARCHAR(5),zhi) from test b 
            where b.id=a.id 
            for xml path('')),1,1,'') 'zhi'
     from test a
     group by  a.id
     
     /*
     id   zhi
     ---- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     a    1,2,2
     b    1,3
     
     (2 行受影响)
     
     
     */
      

  2.   

    ;with c1(id, rval) as
    (
    select 'a', 1 union all
    select 'a', 2 union all
    select 'a', 2 union all
    select 'b', 1 union all
    select 'b', 3 
    )
    select id,
    STUFF( (select ','+LTRIM(rval) from c1 where c1.id = d.id FOR XML PATH('')),1,1,'') zhi
    from c1 d
    group by idid   zhi
    ---- -----
    a    1,2,2
    b    1,3(2 行受影响)