一个表A      B       C
1     car      23
1     book     41
1     good     85
1     one      48
1     seat     332     china    52
2     thank    43
2     sow      47
2     rain     983     fair     23
3     cash     46
3     word     48
所需返回的记录为 car,book,good,one,seat
                 china,thank,sow,rain
                 fair,cash,word条件是:A中相同的值所在行的B字段里面的值ORDER BY C输出到一行,并且以','间隔.谢谢~

解决方案 »

  1.   

    --参考字符串汇总问题,在SQL Server 2000下受推荐的方式为:用户定义函数。具体处理方法及实现请参考:
    ---------------------------------------------------------------------------------------
    --生成测试数据
    create table 表(部门 int,人员 varchar(20))
    insert into 表 select 1,'张三'
    insert into 表 select 1,'李四'
    insert into 表 select 1,'王五'
    insert into 表 select 2,'赵六'
    insert into 表 select 2,'邓七'
    insert into 表 select 2,'刘八'
    go--创建用户定义函数
    create function f_str(@department int)
    returns varchar(8000)
    as
    begin
        declare @ret varchar(8000)
        set @ret = ''
        select @ret = @ret+','+人员 from 表 where 部门 = @department
        set @ret = stuff(@ret,1,1,'')
        return @ret 
    end
    go
    --执行
    select 部门,人员=dbo.f_str(部门) from 表 group by 部门 order by 部门
    go--输出结果
    /*
    部门  人员
    ----  --------------
    1     张三,李四,王五
    2     赵六,邓七,刘八
    */
    --删除测试数据
    drop function f_str
    drop table 表
    go
      

  2.   

    declare @str varchar(8000)
    set @str=''
    select @str=@str + B + ',' from table order by Cprint left(@str,len(@str))
      

  3.   

    字段 B的类型是char(16),查询返回的也是char(16),能不能只输出有效字符.例如值book,汇总后输出的是  book  ,能不能只输出book,前后的空格不要.谢谢了