sql语句求和

表1
名称 单位 金额
a b 100
a b 200
c b 100
通过什么语句可以将表中修改为
名称 单位 金额
a b 300
c b 100

第1个回答  2008-04-11
select b.编号,b.学号,b.姓名,b.总成绩
from(
select a.编号,a.学号,a.姓名,sum(a.成绩)over(partition by 成绩)as 总成绩,
rank() over(partition by a.姓名 order by rownum) as num
from 表a
)b
where num = 1
-------------------------------------------------------
lz如果是要每个人第一个编号的话,结果和lz要求的一样

1 001 丁一 282
4 001 王二 203
6 001 张三 120
6 001 刘四 107
第2个回答  2012-12-30
就是把名称相同的金额合并是吧!
手写的,试试这个。
update 表1 set 金额=(select sum(金额) from 表1 group by 名称,单位 having count(*)>1)
后面的having count(*)>1也可以去掉,意思是:名称,单位相同的数据大于1个把金额合并!
第3个回答  2012-12-30
1. 原表操作,不用临时表。
1) insert into T (select 名称,单位,count(*) from T group by 名称,单位);
2) delete from (select 名称,单位, row_number() over (partition by 名称,单位 order by 金额 desc) as rk) T where rk<>1

2. 临时表
参见1楼
第4个回答  2012-12-30
select 名称,单位,sum(金额) from Table group by 名称,单位 ,查出来的数据插入到其他表,这个表清空,再把数据倒回来。
第5个回答  2014-12-24
-- SQLServer:
select  sum(case when a is null or a = 0 then isnull(b,0) else a end) 
from table1
-- Oracle:
select  sum(case when a is null or a = 0 then nvl(b,0) else a end) 
from table1

相似回答