Oracle SQL查询在同一列中查找差异

时间:2015-07-02 09:50:37

标签: oracle

我想找到相同解码的基于'CR'信用额或'DB'借方的金额之间的差异。 例如

Sum(Amount)        Decode              CR_OR_DB
-----------------------------------------------
5.84               D000006947               DB
380.12             D000000360               CR      
0.36               D000000546               CR
3.6                D000000010               CR
19.8               D000000013               CR
234.08             D000006947               CR
10.13              D000000360               DB

上表: 我想用相同的解码减去借记金额(CR)的借记金额(DB)。

2 个答案:

答案 0 :(得分:1)

使用上面的表结构和AMOUNT,DECODE和CR_OR_DB列使用简单的SUM函数并将CR / DB解码为所需的符号。

select decode, sum (decode(CR_OR_DB,'CR',1,'DB',-1) * amount) amount from test group by decode

答案 1 :(得分:1)

你可以简单地使用自我关节:

select t1.decode,(t1.sum-t2.sum) as result from test1 t1,test1 t2 
where t1.decode=t2.decode and t1.cr_or_db='cr' and t2.cr_or_db='db'

SQLfiddle:Output :Check out here