【问题标题】:How to add total from multiple column in SQLyog?如何从 SQLyog 中的多个列中添加总计?
【发布时间】:2022-01-07 07:20:23
【问题描述】:
SELECT DATE(DATE), 
       SUM(CASE WHEN pay_code = "AC" THEN amount ELSE 0 END) AS Cash,
       SUM(CASE WHEN pay_code = "BT" THEN amount ELSE 0 END) AS `Bank Transfer`,
       (Cash + `Bank Transfer`) AS Total 
FROM partial_payment
GROUP BY DATE(DATE);

当我运行这个查询时,我得到了这个错误: 错误代码:1054 “字段列表”中的未知列“现金”

SELECT DATE(date), 
       SUM(CASE WHEN pay_code = "AC" THEN amount ELSE 0 END) AS Cash,
       SUM(CASE WHEN pay_code = "BT" THEN amount ELSE 0 END) AS `Bank Transfer`,
       ('Cash' + 'Bank Transfer') AS Total 
FROM partial_payment
GROUP BY DATE(date);

当我像上面一样更改它时,它运行成功但总数不加起来

有人知道怎么解决吗?

【问题讨论】:

    标签: mysql sql group-by sum sqlyog


    【解决方案1】:

    您不能引用在同一选择列表中创建的列。相反,您可以使用 派生表(子查询):

    SELECT Cash, `Bank Transfer`, (Cash + `Bank Transfer`) AS Total 
    FROM (
        SELECT DATE(DATE), 
               SUM(CASE WHEN pay_code = "AC" THEN amount ELSE 0 END) AS Cash,
               SUM(CASE WHEN pay_code = "BT" THEN amount ELSE 0 END) AS `Bank Transfer`
        FROM partial_payment
        GROUP BY DATE(DATE)
    ) dt
    

    注意:('Cash' + 'Bank Transfer') 正在尝试添加字符串文字,并且 - 正如您所注意到的 - 返回完全不同的内容。

    【讨论】:

    • 我可以知道什么是 dt 吗?
    • 只是命名 subqeury dt。 (有些 dbms 需要一个名称,有些则不需要。)
    • 错误代码:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 'FROM partial_payment GROUP BY DATE(DATE) ) dt 附近使用正确的语法
    • 我已经知道了,因为Bank Transfer 后面多了一个逗号
    • 典型的复制粘贴事故...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多