有表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

解决方案 »

  1.   

      
    drop table tb
    drop function f_str
    CREATE TABLE tb(id int,pid int)
    INSERT tb SELECT 1,1
    UNION ALL SELECT 1,2
    UNION ALL SELECT 1,3
    UNION ALL SELECT 2,1
    UNION ALL SELECT 2,2
    UNION ALL SELECT 3,1--合并处理函数
    CREATE FUNCTION f_str(@id int)
    RETURNS varchar(1000)
    AS
    BEGIN
    DECLARE @re varchar(100)
    SELECT @re=isnull(@re+',','')+CAST(pid as varchar)
    FROM tb
    WHERE id=@id
    RETURN @re
    ENDselect distinct id,dbo.f_str(id) as 'fid'
    from tb
      

  2.   

    行列互转_整理贴3 
    http://topic.csdn.net/u/20080614/17/22e73f33-f071-46dc-b9bf-321204b1656f.html
      

  3.   

    这个问题N次了.CREATE FUNCTION f_str(@id int)
    RETURNS varchar(1000)
    AS
    BEGIN
        DECLARE @re varchar(100)
        SELECT @re=isnull(@re+',','')+CAST(pid as varchar)
        FROM tb
        WHERE id=@id
        RETURN @re
    ENDselect distinct id,dbo.f_str(id) as 'fid'
    from tb
      

  4.   

    这个问题N次了. CREATE FUNCTION f_str(@id int) 
    RETURNS varchar(1000) 
    AS 
    BEGIN 
        DECLARE @re varchar(100) 
        SELECT @re=isnull(@re+',','')+CAST(pid as varchar) 
        FROM tb 
        WHERE id=@id 
        RETURN @re 
    END select distinct id,dbo.f_str(id) as 'fid' 
    from tb