首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

列转行,该如何处理

2012-08-01 
列转行现有如下测试数据库序号异常记录调整内容A011、异常记录1、调整内容A012、异常记录22、调整内容2A013、异

列转行
现有如下测试数据库
序号 异常记录 调整内容
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
[解决办法]

SQL code
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 序号
[解决办法]
SQL code
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 行受影响)**/ 

热点排行
Bad Request.