表的结构如下:
姓名    身份证                     其他名称
张三    330124197905255745         test1
张三    330124197905255745         test2
李四    330328197905255859         test3
李四    330328197905255859         test4
.       .
.       .
.       .
显示为
姓名    身份证                     其他名称
张三    330124197905255745         test1,test2
李四    330328197905255859         test3,test4即:将姓名和身份证一样的人员显示为一条,并将多个其他名称用","分隔显示为一个字段

解决方案 »

  1.   

    建函数
    create function F_Str(@id varchar(30))
    returns varchar(250)
    as
    begin
        declare @sql varchar(1000)
        set @sql=''
        select @sql=@sql+'/'+orderformno_serial from view1 where [outputgoodsnum]=@id    --STUFF ( character_expression1 , start , length ,character_expression2). 
        --字符串char1从start开始的第length位字符用char2字符串代替
        return  stuff(@sql,1,1,'')
    end
      

  2.   

    楼上正解 , 一条sql不能实现
    要用函数
    ;)雄关漫道真如铁 , 而今迈步从头越
      

  3.   

    --sql 2005 可以用一个SQL 来实现.
    --sql 2000 就用一个函数.
      

  4.   

    --邹建的一个方法:
    CREATE TABLE A(姓名 VARCHAR(20),身份证 BIGINT,其他名称 VARCHAR(20))
    INSERT INTO A SELECT '张三',330124197905255745,'test1'
    UNION ALL SELECT '张三',330124197905255745,'test2'
    UNION ALL SELECT '李四',330328197905255859,'test3'
    UNION ALL SELECT '李四',330328197905255859,'test4'
    -- 查询处理
    SELECT *
    FROM(
        SELECT DISTINCT 
            姓名,身份证
        FROM A
    )A
    OUTER APPLY(
        SELECT 
            [values]= STUFF(REPLACE(REPLACE(
                (
                    SELECT 其他名称 FROM A N
                    WHERE 姓名 = A.姓名 and 身份证=a.身份证
                    FOR XML AUTO
                ), '<N 其他名称="', ','), '"/>', ''), 1, 1, ''))N/*
    -------------------- ---------------------------
    李四                   330328197905255859   test3,test4
    张三                   330124197905255745   test1,test2(2 行受影响)
    */
      

  5.   


    to:zlp321002(龙卷风2006) 
    为什么用这种方法,会出现下面的错误?我用的是SQL SERVER2000
    服务器: 消息 156,级别 15,状态 1,行 6
    在关键字 'OUTER' 附近有语法错误。
    服务器: 消息 170,级别 15,状态 1,行 12
    第 12 行: 'XML' 附近有语法错误。
      

  6.   

    SQL server 2000 当然就不支持了.说了啊.是2005的用法.邹老大介绍.2005 也可以用CLR来实现它.