首页 > 解决方案 > MySQL 同一张表中两个查询的一个结果

问题描述

我很难理解这个问题。我有一张包含收入和支出的交易表,并且可以愉快地使用以下查询来获取每月摘要。

SELECT month(`Transaction Date`) as month, ROUND(SUM(`Credit` - `Debit`),2) as revenue 
FROM `TABLE 1` WHERE `Account Group` = 'Income' AND `Transaction Date` BETWEEN '2019-01-01' AND '2019-12-31' 
GROUP BY month

给出:

收入
1 100.00
2 50.00
3 400.00
ETC ETC

 SELECT month(`Transaction Date`) as month, ROUND(SUM(`Credit` - `Debit`),2) as cost 
    FROM `TABLE 1` 
    WHERE `Account Type` = 'cost' AND `Transaction Date` BETWEEN '2019-01-01' AND '2019-12-31' 
GROUP BY month

给出:

成本
1 53.00
2 20.00
3 9.99
ETC ETC

我想不出一个查询来将数据组合成一个结果,如下所示。我过去使用过 JOIN,但这都在一张表中。

成本 收入
1 53.00 100.00
2 20.00 50.00
3 9.99 400.00
ETC ETC ETC

任何帮助将不胜感激。非常感谢。

标签: mysqlsql

解决方案


尝试这个:

SELECT 
    month(`Transaction Date`) as month
    , ROUND(SUM(CASE 
                   WHEN `Account Group` = 'Income' THEN `Credit` - `Debit`
                   ELSE 0 
                END),2) as revenue 
    , ROUND(SUM(CASE 
                   WHEN `Account Type` = 'cost' THEN `Credit` - `Debit` 
                   ELSE 0 
                END),2) as cost 
FROM `TABLE 1` 
WHERE (`Account Group` = 'Income' OR  `Account Type` = 'cost')
     AND `Transaction Date` BETWEEN '2019-01-01' AND '2019-12-31' 
GROUP BY month

推荐阅读