表1,有字段A,B(字符型),记录如下
字段A         字段B
 A             一
 A             二       
 A             三       
 B             四      
 B             五   
 B             六
 ...           ...  要得到的结果是这样的:
A    一,二,三
B    四,五,六 
...  ...........就是根据字段A来分组,然后把每组的B字段的内容放在一块 .不能使用变量

解决方案 »

  1.   

    create table tb(字段A varchar(10),字段B varchar(10))
    insert into tb 
    select  'A','一'
    union all select  'A','二'       
    union all select   'A','三'       
    union all select   'B','四'      
    union all select   'B','五'   
    union all select   'B','六'
    gocreate function dbo.fc_str(@A varchar(100))
    returns varchar(100)
    as
    begin
     declare @sql varchar(1000)
     set @sql=''
     select @sql=@sql+','+cast(字段B as varchar(100)) from tb where 字段A=@A
     return stuff(@sql,1,1,'')
    end
    goselect 字段A,dbo.fc_str(字段A) as 字段B from tb group by 字段Adrop table tb
    drop function dbo.fc_str
      

  2.   

    --合并处理函数
    CREATE FUNCTION dbo.f_str(@id varchar(10))
    RETURNS varchar(1000)
    AS
    BEGIN
    DECLARE @re varchar(1000)
    SET @re=''
    SELECT @re=@re+','+CAST(字段B as varchar)
    FROM 表1
    WHERE 字段A=@id
    RETURN(STUFF(@re,1,1,''))
    END
    GO--调用函数
    SELECT 字段A,字段B=dbo.f_str(字段A) FROM 表1 GROUP BY 字段A
      

  3.   

    好像除了使用函数,目前没有好的方法。有谁能只用sql语句来写啊
      

  4.   

    dssw(c#小兵) 说得很对,用函数可以解决我的问题.因为我是在一个软件里用sql 语句做报表,最好能直接用select语句来解决