在ORACLE中如何将一个表中某字段值合计与另一个表的某字段值相减?

现在有两个表,A表字段AMOUNT为发票金额,B表字段REV为收款金额,两表通过字段id关联,需将A表的字段AMOUNT与B表的字段REV相减,但是A表表示的发票可能对应多个B表的收款金额,如何将A表的AMOUNT与对应的B表的多个REV值的和相减,得到未收款金额?

用如下方法:

如有以下两张表:

现要将test1表中的id字段求和,然后与test2表中的id相减,可用如下语句:

select a.id,a.id-b.id from
test2 a,
(select sum(id) id from test1) b

查询结果:

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-13
select a.id,(nvl(a.AMOUNT,0)-nvl(b.REV,0)) Result
from a,
(select b.id,sum(b.REV) REV
from b
group by b.id) b
where a.id=b.id(+);本回答被提问者采纳

SQL语句,同一个表中,两个字段相减,应该怎么写?
在Oracle数据库中,如果你需要从同一个表中对两个字段进行加减运算,可以使用SQL的简单算术运算和聚合函数。首先,对于两个字段的简单加减,例如字段A和字段B,可以直接在SELECT语句中进行,如下所示:sql SELECT 字段A, 字段A + 字段B FROM 表名 WHERE 条件; -- 可以根据需要添加WHERE子句 SELECT 字...

oracle两张表里字段相减问题
需要进行空值处理.

SQL语句,同一个表中,两个字段相减,应该怎么写?
在oracle中加减乘除都是可以直接select的。select 1+2 from dual;select 1-2 from dual;select 字段一,MAX(字段二)-MIN(字段二) from 表 where 字段一=1 group 字段一 注:1、字段二必须是数值型的,或数据都可转换为数值 2、where条件根据需要加 ...

oracle写的sql中求两个字段相减的问题
nvl2(translate(字段, '\\1234567890', '\\'), 'is characters', 'is number')如果是字符返回:is characters 数字则返回:is number 用类似这样的方法先判断是否为数字,排除中文或者括号的情况,再判断空值置为0

pl\/sql developer 中,两表相减,保存结果
建议写一个触发器:当销量表插入一条的时候,去库存表减去刚才型号的商品数量。或者两表连接相减:select A.* from kucun A join (SELECT "MODEL","SPEC","COLOR",SUM(FIVE) s1,sum(SIX) s2,sum(SEVEN) s3,sum(EIGHT) s4,sum(NINE) s5,sum(TEN) s6 FROM sale group by MODEL,SPEC,...

oracle内字段数据相减问题
可以直接用ORACLE的SQL语句相减得到你想要的值 select table1.number-Table.number from table1,table2;

oracle 同一个表两个不同列的时间相减,SQL怎么写?请赐教!!
date 类型是可以直接相减的,单位是天 如:select time2 - time1 from TB 如果varchar类型的可以先转成date类型 如:select to_date(time2,'yyyy-mm-dd hh24:mi:ss') - to_date(time1,'yyyy-mm-dd hh24:mi:ss') from TB

oracle 一个结果集是否在另一结果集中存在
select decode(sign(count(*)),1,0,0,1) as fieldname from (select * from a minus select * from b)一楼的方法很好 巧秒的利用了集合相减 把B从A中减掉 如果有剩余说明两a有不在B中的记录 反之则没有

求sql语句。得出表中两列相减的值
2、计算列:可以使用同一表中的其他列的表达式计算得来。表达式可以是非计算列的列名、常量、函数,也可以是用一个或多个运算符连接的上述元素的任意组合。表达式不能为子查询。语句中的A-B就是计算列,as C的意思是给这个计算列起个列名叫C。只要符合上述规则,你可以任意组合字段、运算符等,形成...

请教如何在ORACLE中把两个时间相减
vs_time := to_char(date'2007-1-1' + end_date - begin_date, 'hh24:mi:ss') ;vs_time需要是一个varchar2类型。我测试通过了,你try一下。这个“date'2007-1-1'”,其实你使用任何一天都可以——因为不care日期只关心时分秒。

相似回答