您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> .NET >> sql语句集合 |M| 求一条SQL更新表的语句 将相同的记录进行合并

sql语句集合 |M| 求一条SQL更新表的语句 将相同的记录进行合并

来源:网络整理     时间:2016/8/25 1:30:45     关键词:sql语句集合

关于网友提出的“sql语句集合 |M| 求一条SQL更新表的语句 将相同的记录进行合并”问题疑问,本网通过在网上对“sql语句集合 |M| 求一条SQL更新表的语句 将相同的记录进行合并”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题:sql语句集合 |M| 求一条SQL更新表的语句 将相同的记录进行合并
描述:

如我有表
A
id user  shop count tatol
1  Mary   pan    21    42
2  Mary   pan    10    20
3  JiM    pan    10    20
4  Jim    bike    1   100
5  Jim    bike   10  1000
然后要把表中相同user 相同 shop 的 count 和 tatol 进行合并结果表为
A
id user  shop count tatol
1  Mary   pan    31    62
3  JiM    pan    10    20
4  Jim    bike   11  1100
谢谢


解决方案1:

mark.....

解决方案2:

blackant2(乔峰) ( ) 信誉:100    Blog 
=
可行,

解决方案3:

^_^

解决方案4:

declare @tablename table
([id] int,[user] char(10),shop char(10),[count] int,[tatol] int)
insert into @tablename
select 1,'Mary', 'pan', 21,42
union select 2,'Mary' ,'pan' ,10 ,20
union select  3, 'JiM', 'pan' ,10 ,20
union select  4, 'Jim', 'bike' ,1 ,100
union select 5, 'Jim', 'bike' ,10, 1000
update a
set [count]=b.[count],tatol=b.tatol
from @tablename a
inner join (
select min([id]) as [id],[user],shop,sum([count]) as [count],sum( tatol) as tatol
from @tablename
group by [user],shop) b on a.id=b.id
delete from @tablename
where [id] not in (select min([id]) from @tablename group by [user],shop)
select * from @tablename
1 Mary       pan        31 62
3 JiM        pan        10 20
4 Jim        bike       11 1100

解决方案5:

update a
set count=b.count,tatol=b.tatol
from tablename a
inner join (
select min(id),user,shop,sum(count),sum( tatol)
from tablename
group by user,shop) b on a.id=b.id
delete from tablename 
where id not in (select min(id) from tablename group by  user,shop)

解决方案6:

类似的,把set语句都去掉试一下。

解决方案7:

另外创建一个和tablename一样结构的表:temptablename,然后执行:
delete from [temptablename]
set IDENTITY_INSERT temptablename ON
insert into  [temptablename] (id, [user], shop, [count], tatol)select min(id),[user],shop,sum([count]),sum(tatol)
from tablename
group by [user],shop
set IDENTITY_INSERT temptablename Off
delete from tablename where id in (select id from tablename)
set IDENTITY_INSERT tablename ON
insert into tablename (id, [user], shop, [count], tatol) select * from temptablename
set IDENTITY_INSERT tablename Off
select * from tablename
不一定是最优的,但是work而且逻辑简单。

解决方案8:

up

解决方案9:

一条语句有点困难,因为你至少要delete被合并的记录。

解决方案10:

又是你?

解决方案11:

select min(id),user,shop,sum(count),sum( tatol)
from tablename
group by user,shop


以上介绍了“sql语句集合 |M| 求一条SQL更新表的语句 将相同的记录进行合并”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3581011.html

sql语句集合相关图片

sql语句集合相关文章