假设有A、B两张表,A是汇总表,而B是明细表,其中
A:
ac_id sum
B:
ac_id particular
sum字段代表总额,而particular代表明细,我想把B表中对应于每一个ac_id都求出和来插入A表中,请问大家SQL语句怎么写啊?
A:
ac_id sum
B:
ac_id particular
sum字段代表总额,而particular代表明细,我想把B表中对应于每一个ac_id都求出和来插入A表中,请问大家SQL语句怎么写啊?
解决方案 »
- ORA-12545: Connect failed because target host or object does not exist
- 请指点哪里错了,谢谢
- oracle-Windows无法启动OracleOraDb10g_home1TNSListener服务,错误 1067:进程意外终止
- oracle可以查询出这样的结果吗?
- PROC运行程序崩溃的GDB,大家帮忙看看是怎么回事
- Orcle学习用那本书好啊?
- 救救我吧~~~oracle的降序索引怎么写呀?
- 请问 Oracle9i JDeveloper 是什么东东,干什么用的?
- 表格不能分区,急救啊!!!
- 备份和导出的问题
- ocl
- 存储过程循环语句如何实现下面的效果,分用光了,请见谅
select ac_id, sum(particular)
from B
group by b.ac_id
假如楼主的A表中已经有了一些记录 而B表中除了A中已有的记录还有些A中没有的记录 这就可以使用MERGE了merge into a
using b
on (a.ac_id=b.ac_id)
when matched then
update a set sum = (select sum(particular) from b where b.ac_id = a.ac_id)
when not matched then
insert into a select ac_id,sum(particular) from b group by ac_id
where exists (select particular from b where b.ac_id = a.ac_id);
where后加入时间条件就行
呵呵,这个merge用错了吧?
merge into a
using b
on (a.ac_id=b.ac_id)
when matched then
update set sum = (select sum(particular) from b where b.ac_id = a.ac_id)
when not matched then
insert select ac_id,sum(particular) from b group by ac_id