表如下:图书分类表:ID列      类型列     类型名
1          1         计算机
2          1         办公自动化
3          2         物理学
4          2         化学
5          1         网站设计
6          2         数学
我想要的结果如下:类型列       类型名    
1           计算机,办公自动化,网站设计
2           物理学,化学,数学各位兄弟帮帮忙。。

解决方案 »

  1.   

    create fUnction TT(@Flag int)
    returns varchar(1000)
    as
    begin
       declare @F varchar(1000)
       set @F =''
       select @F=@F+ 类型名 +',' from A where 类型列=@Flag 
       return left(@F,len(@F)-1)
    endselect 类型列 ,dbo.TT(类型列) from A group by 类型列
      

  2.   

    create table books
    (
    id int,
    类型列 int,
    类型名 varchar(20)
    )
    insert into books
    select 1,1,'计算机' union all
    select 2,1,'办公自动化' union all
    select 3,2,'物理学' union all
    select 4,2,'化学' union all
    select 5,1,'网站设计' union all
    select 6,2,'数学'
    go
    create function dbo.f_books(@a int)
    returns varchar(50)
    as
    begin
    declare @b varchar(50)
    set @b=''
    select @b=@b+类型名+','
    from books
    where 类型列=@a
    set @b=left(@b,len(@b)-1)
    return (@b)
    end
    go
    select 类型列,dbo.f_books(类型列)
    from books
    group by 类型列/*
    类型列                                                            
    ----------- -------------------------------------------------- 
    1           计算机,办公自动化,网站设计
    2           物理学,化学,数学*/
      

  3.   

    稍微有點區別Create Table books
    (
    ID Int,
    类型列 Int,
    类型名 Nvarchar(20)
    )
    Insert Into books Select 1,1,N'计算机' 
    Union All Select 2,1,N'办公自动化' 
    Union All Select 3,2,N'物理学' 
    Union All Select 4,2,N'化学' 
    Union All Select 5,1,N'网站设计' 
    Union All Select 6,2,N'数学'
    GO
    Create Function dbo.GetType(@Type Int)
    Returns Nvarchar(1000)
    As
    Begin
    Declare @S Nvarchar(1000)
    Set @S=''
    Select @S=@S+','+类型名 From books Where 类型列=@Type
    Return (Stuff(@S,1,1,''))
    End
    GO
    Select 
    类型列,
    dbo.GetType(类型列) As 类型名 
    From books
    Group By 类型列
    GO
    Drop Table books
    Drop Function GetType
    --Result
    /*
    类型列 类型名
    1 计算机,办公自动化,网站设计
    2 物理学,化学,数学
    */
      

  4.   

    跟LZ明说了吧这里写最滥的是下面3种1.动态SQL
    2.字段合并
    3.树型求根^^