列转行
现有如下测试数据库
序号 异常记录 调整内容
A01 1、异常记录 1、调整内容
A01 2、异常记录2 2、调整内容2
A01 3、异常记录3 3、调整内容3
这边的序号是一样的,记录数据时是每条记录分开来记录的,现在统计时想把他们合并到一起
结果为:
序号 异常记录 调整内容
A01 1、异常记录;2、异常记录2;3、异常记录3 1、调整内容;2、调整内容2;3、调整内容3
求解
[解决办法]
http://blog.csdn.net/peng13nannan/article/details/7751085
[解决办法]
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 TGROUP BY 序号
[解决办法]
if object_id('[tb]') is not null drop table [tb]gocreate table [tb]([序号] varchar(3),[异常记录] varchar(12),[调整内容] varchar(12))insert [tb]select 'A01','1、异常记录','1、调整内容' union allselect 'A01','2、异常记录2','2、调整内容2' union allselect '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 TGROUP BY 序号/**序号 异常记录 调整内容---- -------------------------------------------------- ----------------------------------------A01 1、异常记录;2、异常记录2;3、异常记录3 1、调整内容;2、调整内容2;3、调整内容3(1 行受影响)**/