处理重复记录的次数,重复一次的用A,其次用B,依次。。。。
2006-10-13 21:05
381 查看
[align=center]处理重复记录的次数,重复一次的用A,其次用B,依次。。。。[/align]
--建立测试环境
create table #TestA(col1 varchar(10),col2 int,col3 varchar(20))
insert into #TestA
select '111',1,'adsf' union all
select '111',2,'sdfd' union all
select '111',3,'tyuio' union all
select '112',1,'dfgg' union all
select '222',1,'sdfg' union all
select '222',2,'vbmv' union all
select '222',3,'tuyi' union all
select '200',4,'dfhfgh' union all
select '111',1,'ert' union all
select '111',2,'hjkj' union all
select '222',1,'sdfg' union all
select '222',2,'vbmv' union all
select '222',3,'tuyi' union all
select '111',1,'ppp'
--测试
--建立一个字符串的虚拟表,用于特殊处理
select top 26 identity(int,65,1) AsciiID
into #AsciiID
from sysobjects A,sysobjects B
--建立一个自动增量的复本
select *,identity(int,1,1) TID into #testAA from #testA
--按递增取得重复值的第几次
select *,(select count(*)
from #testAA B
where A.col1=B.col1 and A.col2=B.col2 and B.TID<=A.TID
group by B.col1,B.col2
) DoubleTime
from #testAA A
--进行测试查询
select C.col1,C.col2,C.col1+isnull(D.AsciiChar,'') NewCol1
from
(
select *,(
select count(*)
from #testAA B
where A.col1=B.col1 and A.col2=B.col2 and B.TID<=A.TID
group by B.col1,B.col2
) DoubleTime
from #testAA A
) C
left join
(
select char(AsciiID) AsciiChar,AsciiID-63 TID
from #AsciiID
) D
on C.DoubleTime=D.TID
--order by C.col1
--显示结果
/*
Col1 Col2 NewCol1
111 1 111
111 2 111
111 3 111
112 1 112
222 1 222
222 2 222
222 3 222
200 4 200
111 1 111A
111 2 111A
222 1 222A
222 2 222A
222 3 222A
111 1 111B
*/
--删除测试环境
drop table #testA
drop table #testAA
drop table #AsciiID
相关文章推荐
- 【troubleshooting】记一次Kafka集群重启导致消息重复消费问题处理记录
- MySQL查询重复出现次数最多的记录
- MySQL查询重复出现次数最多的记录
- 记录一次MySQL复制问题的处理
- pl/sql重复记录处理
- MySQL 查询重复出现次数最多的记录
- [Android]记录一次处理app:transformDexArchiveWithExternalLibsDexMergerForDebug错误
- SQL 重复记录问题的处理方法小结
- MySQL 查询重复出现次数最多的记录
- 中国风整理贴——处理表重复记录(查询和删除)
- (是用树结构来支持并查集的操作8.4.5)UVA 793 Network Connections(输入输出处理的的经典题&&并查集操作之记录查询中yes和no出现的次数)
- MYSQL重复记录排除法处理方式
- oracle 关于表中重复记录的处理
- oracle 关于表中重复记录的处理
- SQL查询重复出现次数最多的记录,按出现频率排序(SQL语句)
- 查询重复出现次数最多的记录
- 关于字符串的一个简单的习题--输入一个数字,判断是几位数,打印每个数字及其重复的次数,依次打印个位到最高位
- 重复记录的处理
- MSSQL 处理表重复记录(查询和删除)
- SQL重复记录处理