有表tab,字段name opt
数据:
tom  a
tom  b
tom  c
jey  d
jey  e
jey  f
...
用group,如何得到
tom a,b,c
jey d,e,f
高手过来啊1!

解决方案 »

  1.   

    不能...SQL2000,比較好的方法是寫function
      

  2.   

    --参照:
    --使用用户定义函数,配合SELECT处理完成字符串合并处理的示例
    --处理的数据
    CREATE TABLE tb(col1 varchar(10),col2 int)
    INSERT tb SELECT 'a',1
    UNION ALL SELECT 'a',2
    UNION ALL SELECT 'b',1
    UNION ALL SELECT 'b',2
    UNION ALL SELECT 'b',3
    GO--合并处理函数
    CREATE FUNCTION dbo.f_str(@col1 varchar(10))
    RETURNS varchar(100)
    AS
    BEGIN
    DECLARE @re varchar(100)
    SET @re=''
    SELECT @re=@re+','+CAST(col2 as varchar)
    FROM tb
    WHERE col1=@col1
    RETURN(STUFF(@re,1,1,''))
    END
    GO--调用函数
    SELECT col1,col2=dbo.f_str(col1) FROM tb GROUP BY col1
    --删除测试
    DROP TABLE tb
    DROP FUNCTION f_str
    /*--结果
    col1       col2
    ---------- -----------
    a          1,2
    b          1,2,3
    --*/
    GO
    2000中 这样处理
      

  3.   

    create function fn_test(@name varchar(10))
    returns varchar(50)
    AS
    begin
    declare @str varchar(50)
    set @str=''
    select @str=@str+','+opt from tab where name=@name
    set @str=stuff(@str,1,1,'')
    return @str
    endGOselect [name],fn_test(name) as [opt] from tab group by name