【问题标题】:mysql sum two columns on the same values of another two columns [closed]mysql在另外两列的相同值上对两列求和[关闭]
【发布时间】:2020-06-30 14:02:51
【问题描述】:

我有一张这样的桌子:

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

在结果中,我可以在每个日期获得每种货币的付款或收款。 我尝试了 group by + 外连接,但失败了。

感谢您的帮助。

【问题讨论】:

    标签: mysql group-by outer-join


    【解决方案1】:

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

    然后您可以使用SUM 获取每天的总和。

    但是,由于您需要根据另一列的值不同的总和,您必须为您想要的每一列使用SUM,并在内部使用CASE,以便检查另一列的值并仅添加相应的金额如果该列具有所需的值。

    这样的事情应该可以工作。

    你也可以在这里查看小提琴 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`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      • 2019-10-28
      • 1970-01-01
      • 2021-03-03
      • 1970-01-01
      • 2017-11-27
      • 2017-04-14
      相关资源
      最近更新 更多