如何编写选择查询以获得总和(信用)和总和(借方)和2列之间的差异,如下所示。交易类型0是信用,交易类型1是借方。
答案 0 :(得分:0)
要仅在类型为0(并忽略同一列中的其他值)时计算值的总和,请使用条件聚合:
select sum ( case transaction_type_id when 0 then amount end ) as credit, ....
你可以为debit
做同样的事情,并为差异带来差异。
select sum ( case transaction_type_id when 0 then amount end ) as credit,
sum ( case transaction_type_id when 1 then amount end ) as debit,
sum ( case transaction_type_id when 0 then amount end )
- sum ( case transaction_type_id when 1 then amount end ) as difference
from your_table
;
运气好的话,优化器会看到每个总和都会被计算两次,实际上它只计算一次,并在两个地方使用结果。否则,difference
可以用一个条件和更紧密地编写,但它与前两个不同。