mysql 根据另外两列的相同值对两列求和

mysql sum two columns on the same values of another two columns

我有一个 table 这样的:

我需要用这种方式表示数据:

在结果中,我可以得到每个日期每个货币的付款或收款。 我尝试了 group by + outer join,但失败了。

感谢您的帮助。

由于您希望结果按日期分组,因此您应该使用 GROUP BY 按日期分组。

然后你可以使用SUM得到每一天的总和。

但是因为你想要不同的总和取决于另一列的值你必须为你想要的每一列使用 SUM 并且在里面使用 CASE 以检查另一列的值并仅在列具有所需值时添加相应的金额。

像这样的东西应该有用。

您也可以在此处查看 fiddle http://sqlfiddle.com/#!9/05ab84/4

SELECT 
`TradeDate`,
SUM(CASE
    WHEN `BaseCCY`='EUR' THEN `BaseAmt`
    WHEN `TermCCY`='EUR' THEN `TermAmt`
    ELSE 0
    END) AS `EUR`,
SUM(CASE
    WHEN `BaseCCY`='USD' THEN `BaseAmt`
    WHEN `TermCCY`='USD' THEN `TermAmt`
    ELSE 0
    END) AS `USD`,
SUM(CASE
    WHEN `BaseCCY`='AUD' THEN `BaseAmt`
    WHEN `TermCCY`='AUD' THEN `TermAmt`
    ELSE 0
    END) AS `AUD`,
SUM(CASE
    WHEN `BaseCCY`='CNH' THEN `BaseAmt`
    WHEN `TermCCY`='CNH' THEN `TermAmt`
    ELSE 0
    END) AS `CNH`
FROM `test` GROUP BY `TradeDate`