SQL Server 2005 合并行数据
2013-11-08 09:32
274 查看
--测试数据 create table tab ( NumID int, SkuID varchar(max), Stock varchar(max) ) go declare @i int set @i=1 while @i<23 begin insert into tab (NumID,SkuID,Stock) values ('23940',3982+@i,3+@i) set @i=@i+1 end declare @k int set @k=1 while @k<4 begin insert into tab (NumID,SkuID,Stock) values ('33950',32+@k,3+@k) set @k=@k+1 end declare @n int set @n=1 while @n<2 begin insert into tab (NumID,SkuID,Stock) values ('36951',52+@n,3+@n) set @n=@n+1 end --select * from tab
需求:将tab表中的数据进行分组合并,合并规则如下:将相同NumID的数据进行合并,每行最多合并20行tab中的数据,超出20行则另插入一行。
结果要求如下图所示。
解答:
--插入临时表 select NumID,SkuID,Stock,row_number() over(order by NumID) as rn, (row_number() over(order by NumID)-1)/20 as kk into #tab from tab select * from #tab
先将原数据插入临时表,进行处理,得到如下结果:
kk字段是为了进行分组
SELECT B.NumID,LEFT(StuList,LEN(StuList)-1) as Sku_Stock FROM ( SELECT NumID, (SELECT SkuID+':'+Stock+',' FROM #tab WHERE NumID=A.NumID and kk=A.kk FOR XML PATH('')) AS StuList FROM #tab A GROUP BY NumID,kk ) B
得到结果数据:
相关文章推荐
- sql server 2005 A字段相同数据的B字段合并
- 利用存储过程取得SQL Server 2005数据表信息
- SQL Server 2005/2008 合并复制Step by Step
- SQL Server 2005的XML数据修改语言(XML DML)
- SQL SERVER 2005 数据挖掘与商业智能完全解决方案---学习笔记(一)
- SQL Server Compact 与 SQL Server 2005 通过远程访问进行数据同步
- 导出和导入表中数据----sql server 2005
- 在SQL Server 2005数据库中更改数据架构
- Sql Server里巧用Case将多行显示的数据合并为一行显示
- SQL Server 2005的XML数据修改语言(XML DML)
- SQL Server 2005关于数据类型最大值
- ASP.NET 数据分页第一篇 - 探讨分页原理及 SQL Server 2005 的 ROW_NUMBER 函数
- SQL Server 2005 系统数据介绍:sys.dm_exec_requests
- SQL SERVER 2005 只有mdf文件的数据恢复方法
- SQL Server 2005中的分区表(二):如何添加、查询、修改分区表中的数据
- sql server 2005 导出表数据
- sql server 2005 and above, 合并多行为一行,并返回
- Execl(2003)数据 导入 SQL Server(2005)
- SQL Server 2005的XmL数据类型之基础篇
- SQL Server 2005 数据类型和.Net数据类型的对应关系