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

归拢重复数据

2013-07-04 
合并重复数据有这样一个表declare @a table(a varchar(10),b varchar(20),c int)insert @a selectA ,T

合并重复数据
有这样一个表
declare @a table(a varchar(10),b varchar(20),c int)

insert @a select   'A' ,'T',5
union all select   'A' ,'T',8
union all select   'B' ,'S',10

如何合并字段a和b相同的C值。并删除其中一行。得出如下结果?

SELECT * FROM @a
/*
abc
AT13
BS10
*/
[解决办法]
@a 增加一个自增列

declare @a table(id int identity(1,1), a varchar(10),b varchar(20),c int)

insert @a select   'A' ,'T',5
union all select   'A' ,'T',8
union all select   'B' ,'S',10

--合并C值
;with B AS (
  select a, b, sum(c) as c, min(id) as mid 
  from @a 
  group by a, b
)
update @a set c=(select top 1 c from B where mid=id)

--删除重复的
delete from @a where c is null

select * from @a
[解决办法]
select a,b,sum(c) c from @a group by a,b

1、把结算生成临时表

2、再清空原表

3、再把临时表新增到原表

热点排行