对于每天记录的资金交易不超过一次的数据库,计算所有回购中心的总现金余额。
所以上面问题的解决方案是
select distinct
((select sum(inc) from income_o) - (select sum(out) from outcome_o))
解决方案很好用。但是,我需要检查表中是否存在记录,所以我在我的解决方案中引入case语句。
select CASE
when (SELECT COUNT(*) FROM income_o) = 0
then 0
when (SELECT COUNT(*) FROM outcome_o) = 0
then 0
else (select distinct ((select sum(inc) from income_o) - (select sum(out) from outcome_o)))
end as result
from income_o
之后我得到重复的结果:
myResult
-----------
28985.9600
28985.9600
28985.9600
28985.9600
28985.9600
28985.9600
28985.9600
28985.9600
28985.9600
我需要收到什么
28985.9600
我该如何解决?
您可以将其放在子查询中,并在外部执行以下操作:
select distinct result from
(
select CASE
when (SELECT COUNT(*) FROM income_o) = 0
then 0
when (SELECT COUNT(*) FROM outcome_o) = 0
then 0
else (select distinct ((select sum(inc) from income_o) - (select sum(out) from outcome_o)))
end as result
from income_o
) a
或者你也可以做一些不同的案例价值
select distinct CASE
when (SELECT COUNT(*) FROM income_o) = 0
then 0
when (SELECT COUNT(*) FROM outcome_o) = 0
then 0
else (select distinct ((select sum(inc) from income_o) - (select sum(out) from outcome_o)))
end as result
from income_o
删除'from income_o'后,您将获得正确的结果,否则结果将显示与income_o相同的行数
select CASE
when (SELECT COUNT(*) FROM income_o) = 0
then 0
when (SELECT COUNT(*) FROM outcome_o) = 0
then 0
else (select distinct ((select sum(inc) from income_o) - (select sum(out) from outcome_o)))
end as result