mysql - Mysql select查询中无法使用Case语句?

标签 mysql mysql-workbench

这是我的查询,并按交易类型 C(贷方)和 D(借方)进行分组,

SELECT 
case 
WHEN ACT.TRANSACTIONTYPE='C' THEN SUM(ACT.AMOUNT) END AS CreditBalance,
case 
WHEN ACT.TRANSACTIONTYPE='D' THEN SUM(ACT.AMOUNT) END AS DebitBalance
FROM accounttransaction ACT 
WHERE ACT.TRANSACTIONTYPE IS NOT NULL
GROUP BY ACT.TRANSACTIONTYPE;

下面是我的结果

CreditBalance DebitBalance
16536          NULL
NULL           9673

现在我想减去 A/C 的余额,然后我需要显示为当前余额 账户交易表包括账号、交易类型和金额

最佳答案

您只想要所有贷方/借方金额的总计吗?

如果是这样,可能是以下内容:-

SELECT Accountnumber, SUM(CASE WHEN transactiontype = 'C' THEN amount ELSE -1 * amount END) 
FROM accounttransaction
WHERE transactiontype IS NOT NULL
GROUP BY Accountnumber

或者分别给出贷方和借方金额以及总金额

SELECT Accountnumber, 
    SUM(CASE WHEN transactiontype = 'C' THEN amount ELSE 0 END) AS CreditTotal,
    SUM(CASE WHEN transactiontype = 'D' THEN amount ELSE 0 END) AS DebitTotal,
    SUM(CASE WHEN transactiontype = 'C' THEN amount WHEN transactiontype = 'D' THEN -1 * amount ELSE 0 END) AS OverallTotal
FROM accounttransaction
WHERE transactiontype IS NOT NULL
GROUP BY Accountnumber

关于mysql - Mysql select查询中无法使用Case语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17149871/

相关文章:

MySQL 更新触发器 - 如何检测未传递的值?

php - MySQL IN 语句的 PDO 绑定(bind)值

php - MySQL 工作台与 phpMyAdmin

mysql - Where 条件不适用于 MySQL union 2 表

mysql - 如何计算 3 个不同表格之间的利润

将现有列更改为默认值的 Mysql 语法

mysql - 从一列获取相对于另一列数据的数据?

php - 在第 15 行的 C :\wamp\www\storeinfo. php 中读取结果集的 header 时出错,并且 MySQL 服务器已在第 15 行的 C :\wamp\www\storeinfo. php 中消失

mysql - MySQL View 中的 BLOB 而不是正确的数据

mysql - 返回MySQL中的过程执行代码