2

嗨,请帮帮我,我需要对值求和,然后在 Oracle 9i 中减去贷方和借方票据

ID   Acc_TYP     Amt  


1     CR         100
2     CR         200
3     DB         50
4     DB         50   

使用上面的表结构,我需要通过(CR-DB)计算余额,如何
在单查询中形成逻辑,请帮我解决这个问题,我是oracle的初学者。提前致谢

4

4 回答 4

2
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');
于 2013-04-17T07:49:58.270 回答
1

您应该使用 CASE 语句:

select sum(case when Acc_TYP='DB' 
                then -amt 
                else amt 
           end ) from t
于 2013-04-17T07:50:23.903 回答
0

另一个基于案例的解决方案,使用“简单案例陈述”: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   ...
于 2013-04-17T08:52:40.423 回答
-1

尝试这个:

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')
)
于 2013-04-17T07:48:15.410 回答