嗨,请帮帮我,我需要对值求和,然后在 Oracle 9i 中减去贷方和借方票据
ID Acc_TYP Amt
1 CR 100
2 CR 200
3 DB 50
4 DB 50
使用上面的表结构,我需要通过(CR-DB)计算余额,如何
在单查询中形成逻辑,请帮我解决这个问题,我是oracle的初学者。提前致谢
select sum(
case
when acc_typ='CR' then amt
when acc_typ='DB' then -amt
else 0
end) as balance
from the_table
where acc_typ in ('CR', 'DB');
您应该使用 CASE 语句:
select sum(case when Acc_TYP='DB'
then -amt
else amt
end ) from t
另一个基于案例的解决方案,使用“简单案例陈述”:http ://docs.oracle.com/cd/B28359_01/appdev.111/b28370/controlstructures.htm#i8305
select sum(case acc_type
when 'CR' then +amt
when 'DB' then -amt
end) balance
from ...
尝试这个:
select sum(n) from (
(select sum(amt) as n from table where acc_typ='CR')
union
(select -sum(amt) as n from table where acc_typ='DB')
)