用表B中的 net_amount 字段 更新表A中 net_amout 的数据.两表的关联关系是B.quote_oid = A.oidA与B表的关系是1:nB表中取值的条件是 line_num 为最小的一条,并且status不等于40参考数据如下:A: oid net_amout
1 100B: oid quote_oid line_num status net_amout
100 1 1 40 101
101 1 2 10 102
103 1 3 10 103最终我们得到的结果应该为A: OID NET_AMOUNT
1 102
1 100B: oid quote_oid line_num status net_amout
100 1 1 40 101
101 1 2 10 102
103 1 3 10 103最终我们得到的结果应该为A: OID NET_AMOUNT
1 102
解决方案 »
- 我把原来表空间的数据文件备份了,现在重装系统了,如何挂接表空间数据文件。
- 一个比较畸歪的PL/SQL问题
- 横刀立马:谁能挑战高效分页存储过程(MS-SQL)?500元悬赏!!!
- 复杂问题简单化,简单问题条理化!!!!!
- 【求助】instead of 触发器无法提交修改 (不好意思,没分了)
- 请教oracle建表慢的问题
- 菜鸟提问: 怎样中断正在运行的SQL语句啊?
- 帮帮小菜鸟:关于在Oracle中插入日期值
- 关于DEVELOPER2000运行环境
- oracle 调用java发出http请求怎么没有请求到服务器
- Oracle判断一列里的值全部都是数值的函数怎么写?
- 关于function测试 传参问题
merge into a
using (select b.quote_oid,
b.net_amout,
row_number() over(partition by b.quote_oid order by line_num) rn
from b
where b.status <> 40) t
on (a.id = t.quote_oid and t.rn = 1)
when matched then
update set a. net_amount = t.net_amout;
为什么要sql92的,,oracle特有的不行?
是否唯一?update a
set net_amount =
(select net_amount
from b
where b.quote_oid = a.oid
and status <> 40
and line_num = (select min(line_num)
from b c
where c.quoto_oid = a.oid
and status <> 40))