Oracle SQL查询以查找同一列中的差异

Oracle SQL查询以查找同一列中的差异,oracle,Oracle,我想找出相同解码的基于“CR”贷记或“DB”借记的金额之间的差异。 比如说 Sum(Amount) Decode CR_OR_DB ----------------------------------------------- 5.84 D000006947 DB 380.12 D000000360 CR 0.36

我想找出相同解码的基于“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
上表:
我想用借记金额(DB)减去贷记金额(CR),以进行相同的解码。

使用上面的表格结构和列AMENT、decode和CRU或CRU DB使用简单的求和函数,将CR/DB解码为所需符号

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

您可以简单地使用自关节:

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:

这些积分应该存储为负数。您需要在SQL中执行IF-THEN语句……对于上述示例数据,您的预期输出是什么?请更新您的问题以包含您想要的输出。例如解码:D000006947。我想要234.08-5.85=228.23还有,这是mysql数据库还是oracle数据库?您的标记有误导性。Oracle输出应为:D000006947228.23