Я использую следующий запрос для получения чистой стоимости поля количества (суммы) в моей таблице. Чистое значение рассчитывается на основе типа поля, называемого типом транзакции. Может ли кто-нибудь помочь мне, посоветовавшись, есть ли способ упростить мой нижний запрос.
select (select sum(jvm_txn_amount) from jvm_transactions
where jvm_txn_mode = 'CASH' and
jvm_txn_type = 'Receipt' and
jvm_txn_mnt_stat = 'A') -
(select sum(jvm_txn_amount) from jvm_transactions
where jvm_txn_mode = 'CASH' and
jvm_txn_type = 'Payment' and
jvm_txn_mnt_stat = 'A')as net_balance
from dual
Возможно, начните с группировки по jvm_txn_type
:
SELECT SUM(IF(x.type='Receipt', s, 0)) -
SUM(IF(x.type='Payment', s, 0)) AS net_balance FROM
( SELECT jvm_txn_type type, SUM(jvm_txn_amount) s
FROM jvm_transactions
WHERE jvm_txn_mode = 'CASH'
AND jvm_txn_mnt_stat = 'A'
GROUP BY jvm_txn_type
) x
Он несколько более компактный и менее повторяющийся, что должно сделать его более универсальным и более простым в обслуживании.