现有如下测试数据库
序号        异常记录      调整内容
A01      1、异常记录    1、调整内容
A01        2、异常记录2    2、调整内容2
A01       3、异常记录3    3、调整内容3这边的序号是一样的,记录数据时是每条记录分开来记录的,现在统计时想把他们合并到一起
结果为:
序号        异常记录                                    调整内容
A01         1、异常记录;2、异常记录2;3、异常记录3    1、调整内容;2、调整内容2;3、调整内容3求解

解决方案 »

  1.   

    http://blog.csdn.net/peng13nannan/article/details/7751085
      

  2.   

    SELECT 序号,
    异常记录=STUFF((SELECT ';'+异常记录 FROM TB WHERE 序号=T.序号 FOR XML PATH('')),1,1,''),
    调整内容=STUFF((SELECT ';'+调整内容 FROM TB WHERE 序号=T.序号 FOR XML PATH('')),1,1,'')
    FROM TB T
    GROUP BY 序号
      

  3.   

    if object_id('[tb]') is not null drop table [tb]
    go
    create table [tb]([序号] varchar(3),[异常记录] varchar(12),[调整内容] varchar(12))
    insert [tb]
    select 'A01','1、异常记录','1、调整内容' union all
    select 'A01','2、异常记录2','2、调整内容2' union all
    select 'A01','3、异常记录3','3、调整内容3'
    goSELECT 序号,
    异常记录=STUFF((SELECT ';'+异常记录 FROM TB WHERE 序号=T.序号 FOR XML PATH('')),1,1,''),
    调整内容=STUFF((SELECT ';'+调整内容 FROM TB WHERE 序号=T.序号 FOR XML PATH('')),1,1,'')
    FROM TB T
    GROUP BY 序号/**
    序号   异常记录                                               调整内容
    ---- -------------------------------------------------- ----------------------------------------------------------------------------
    A01  1、异常记录;2、异常记录2;3、异常记录3                             1、调整内容;2、调整内容2;3、调整内容3(1 行受影响)
    **/