Tableid     name    title 
1      AA      1.AA
2      BB      2.BB
3      CC      3.CC
1      AA      1.BB
我要把相同ID,NAME的title 合併成一行顯示結果為 
id     name    title 
1      AA      1.AA,1.BB
2      BB      2.BB
3      CC      3.CC

解决方案 »

  1.   

    --需要寫一個合併函數--建立測試環境
    Create Table TEST
    (id Int,
     name  Varchar(10),
     title  Varchar(10))
    Insert TEST Select 1,     'AA',      '1.AA'
    Union All Select 2,     'BB',      '2.BB'
    Union All Select 3,     'CC',      '3.CC'
    Union All Select 1,     'AA',      '1.BB'
    GO
    --建立合併函數
    Create Function Gettitle(@id Int, @name Varchar(10))
    Returns Varchar(8000)
    As
    Begin
    Declare @S Varchar(8000)
    Select @S = ''
    Select @S = @S + ',' + Rtrim(title) From TEST Where id =@id And name = @name
    Select @S = Stuff(@S , 1, 1 ,'')
    Return @S
    End
    GO
    --測試
    Select
    id,
    name,
    dbo.Gettitle(id, name) As title
    From 
    TEST
    Group By 
    id, 
    name
    GO
    --刪除測試環境
    Drop Table TEST
    Drop Function Gettitle
    --結果
    /*
    id name title
    1 AA 1.AA,1.BB
    2 BB 2.BB
    3 CC 3.CC
    */
      

  2.   

    使用函数---建立函数
    create function GetTitle
    (@id int,@name varchar(30))
    returns varchar(1000)
    as
    begin
    declare @title varchar(1000)
    set @title=''
    select @title=@title + ',' + title from t1 where id=@id and name=@name
    set @title=stuff(@title,1,1,'')
    return @title
    end---获取数据
    select id,name,dbo.getTitle(id,name) from t1
    group by id,name
      

  3.   

    paoluo(一天到晚游泳的鱼)    
    正解
      

  4.   

    Declare @S Varchar(8000)
    Select @S = ''
    Select @S = @S + ',' + Rtrim(title) From TEST Where id =@id And name = @name
    Select @S = Stuff(@S , 1, 1 ,'')
    Return @S
      

  5.   

    行列转换--合并有表A,
     id pid
     1   1
     1   2
     1   3
     2   1
     2   2
     3   1
    如何化成表B:
     id pid
      1  1,2,3
      2  1,2
      3  1创建一个合并的函数
    create function fmerg(@id int)
    returns varchar(8000)
    as
    begin
    declare @str varchar(8000)
    set @str='
    select @str=@str+','+cast(pid as varchar) from 表A where id=@id
    set @str=right(@str,len(@str)-1)
    return(@str)
    End
    go--调用自定义函数得到结果
    select distinct id,dbo.fmerg(id) from 表A
      

  6.   

    Stuff函數在sql里能用嗎??因為我不會寫procedure
      

  7.   

    SQL裡有STUFF函數。另外,我寫的不是procedure,而是function。
      

  8.   

    首先謝謝paoluo(一天到晚游泳的鱼)
    請問這個函數寫在哪阿?我不會用啊
      

  9.   

    --在查詢分析器中執行這段函數。--建立合併函數
    Create Function Gettitle(@id Int, @name Varchar(10))
    Returns Varchar(8000)
    As
    Begin
    Declare @S Varchar(8000)
    Select @S = ''
    Select @S = @S + ',' + Rtrim(title) From TEST Where id =@id And name = @name
    Select @S = Stuff(@S , 1, 1 ,'')
    Return @S
    End
    GO--當然,這裡的TEST要改為你實際的表名
      

  10.   

    paoluo(一天到晚游泳的鱼)  正解
      

  11.   

    --創建了函數後,你以後查詢的語句就是這麼寫Select
    id,
    name,
    dbo.Gettitle(id, name) As title
    From 
    TEST
    Group By 
    id, 
    name--  同樣,TEST要改為你自己實際的表名.
      

  12.   

    我在oracle 的pl-sql 里的 function 里新建了一個函數create or replace function Getattname(@first_cate varchar2(10),@second_cate varchar2(10) ) return returns varchar2(4000) is
      Result returns varchar2(4000);
    begin
      declare @attname varchar2(4000)
    set @attname=''
    select @attname=@attname + ',' + att_name from pur_std_data where first_cate=@first_cate and second_cate=@second_cate
    set @attname=stuff(@attname,1,1,'')
    return @attname;
      
    end Getattname;可是編譯的時候沒成功
      

  13.   

    暈,你的是ORACLE,你開始沒說,我還以為是MS SQL的。我寫的是在MS SQL環境下的,ORACLE不會。
      

  14.   

    參考了ORACLE的function,修改了下,你試試看create or replace function Getattname(@first_cate varchar2(10),@second_cate varchar2(10) ) returns varchar2(4000) as
      Result varchar2(4000);
    begin
    set Result=''
    select Result=Result + ',' + att_name from pur_std_data where first_cate=@first_cate and second_cate=@second_cate
    set Result= SUBSTR(Result, 2, LENGTH (Result) - 1)
    return Result;
    end ;
      

  15.   

    非常感謝paoluo(一天到晚游泳的鱼)
    好人吶-_-我去試試
      

  16.   

    謝謝大家,尤其paoluo(一天到晚游泳的鱼)編譯function的時候提示什麼html document direction.好像還要下載安裝這個吧我先找其他方法代替一下了..以後空了再向大家請教..結帖先