SQL Server 2005 行号、合并、分组
2013-12-26 10:21
295 查看
--> 测试数据:[a] if object_id('[a]') is not null drop table [a] go create table [a]([djbh] varchar(10),[spid] varchar(10),[shl] int) insert [a] select 'bh001' ,'sp001' ,10 union all select 'bh001' ,'sp002' ,11 union all select 'bh001' ,'sp003' ,15 union all select 'bh002' ,'sp001' ,10 union all select 'bh002' ,'sp002' ,11 union all select 'bh002' ,'sp003' ,15 union all select 'bh003' ,'sp001' ,97 union all select 'bh003' ,'sp003' ,98 union all select 'bh003' ,'sp004' ,99 select * from a /*djbh spid shl ---------- ---------- ----------- bh001 sp001 10 bh001 sp002 11 bh001 sp003 15 bh002 sp001 10 bh002 sp002 11 bh002 sp003 15 bh003 sp001 97 bh003 sp003 98 bh003 sp004 99 (9 行受影响) */ --A:查询spid、shl及单据明细条数有相同的djbh --处理测试数据 select *,row_number() over(PARTITION BY djbh order by djbh,spid) as rowid into #a from a select * from #a /* djbh spid shl rowid ---------- ---------- ----------- -------------------- bh001 sp001 10 1 bh001 sp002 11 2 bh001 sp003 15 3 bh002 sp001 10 1 bh002 sp002 11 2 bh002 sp003 15 3 bh003 sp001 97 1 bh003 sp003 98 2 bh003 sp004 99 3 (9 行受影响) */ --按单据编号进行分组合并 SELECT [djbh], (SELECT [spid]+',' FROM #a WHERE djbh=a.djbh FOR XML PATH('') ) AS [spid] , (SELECT cast([shl] as varchar(10))+',' FROM #a WHERE djbh=a.djbh FOR XML PATH('') ) AS [shl] into #b FROM #a a GROUP BY [djbh] select * from #b /* djbh spid shl ---------- ------------------------ bh001 sp001,sp002,sp003, 10,11,15, bh002 sp001,sp002,sp003, 10,11,15, bh003 sp001,sp003,sp004, 97,98,99, (3 行受影响) */ --查询重复数量大于2的单据号 select djbh from #b a, (select spid,shl from #b group by spid,shl having count(djbh)>=2) b where a.spid=b.spid and a.shl=b.shl /* djbh ---------- bh001 bh002 (2 行受影响) */
相关文章推荐
- SQL Server 2005 中行号的显示,分页
- SQL Server 2005中的分区表(四):删除(合并)一个分区
- SQL Server 2005/2008 合并复制Step by Step
- sql 中对分组的信息进行聚合。(sql server 2005)
- SQL Server 2005中的分区表(四):删除(合并)一个分区
- Sql Server:多行合并成一行,并做分组统计
- SQL Server 2005 合并行数据
- SQL Server 2005中的分区表(四):删除(合并)一个分区
- Sql Server:多行合并成一行,并做分组统计的两个方法
- 【转】SQL Server 2000/2005/2008 行列互相转换、合并等总结
- SQL Server 2005合并列成字符串 2008-11-07
- Sql Server:多行合并成一行,并做分组统计
- SQL Server查询提示(5):分组、合并提示
- [SQL Server 2005]在记录集中增加行号
- Sql Server:多行合并成一行,并做分组统计的两个方法
- SQL SERVER 2000/2005/2008 一句话完成分组后加序号--【叶子】
- SQL Server 2005中的分区表(四):删除(合并)一个分区
- SQL Server 2005学习笔记⑦- 分页(按分组进行分页)
- SQL Server 2005 中行号的显示,分页
- SQL SERVER 2005允许自定义聚合函数-表中字符串分组连接