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