mysql - 查询返回两列的总和

标签 mysql sql

我使用以下查询返回账单的总计、税金以及总金额和税金的总计。但问题是因为我使用 sum() 它只返回第一个我如何检索所有行和总计?

SELECT sum(
            at_salesbill.`billedTotal` + at_salesbill.`billedTotalTax`
            ) as grantTotal,
       at_salesbill.`billedTotal` AS at_salesbill_billedTotal,
       at_salesbill.`billedTotalTax` AS billedTotalTax,
  FROM at_salesbill
 WHERE at_salesbill.`billGuid` = 44;

最佳答案

您只需将这些值相加即可得出总和:

SELECT (at_salesbill.`billedTotal`+at_salesbill.`billedTotalTax`) as grantTotal,
       at_salesbill.`billedTotal` AS at_salesbill_billedTotal,
       at_salesbill.`billedTotalTax` AS billedTotalTax,
from at_salesbill
where at_salesbill.`billGuid` = 44;

然后,假设行中有一个唯一的 id,您可以使用一个技巧来获取总数和值:

SELECT at_salesbill.id,
       sum(at_salesbill.`billedTotal`+at_salesbill.`billedTotalTax`) as grantTotal,
       at_salesbill.`billedTotal` AS at_salesbill_billedTotal,
       at_salesbill.`billedTotalTax` AS billedTotalTax,
from at_salesbill
where at_salesbill.`billGuid` = 44
group by at_salesbill.id with rollup;

这里,sum() 没有做任何有趣的事情——因为每组中有一行。但是,with rollup 将添加一个总计列,其中 idNULL

SELECT (case when at_salesbill.id is NULL then 'total' else '' end),
       sum(at_salesbill.`billedTotal`+at_salesbill.`billedTotalTax`) as grantTotal,
       at_salesbill.`billedTotal` AS at_salesbill_billedTotal,
       at_salesbill.`billedTotalTax` AS billedTotalTax,
from at_salesbill
where at_salesbill.`billGuid` = 44
group by at_salesbill.id with rollup;

关于mysql - 查询返回两列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21801894/

相关文章:

mysql - 从更多相同的表创建一张大表

php - 如何根据单击的按钮重用受影响的不同行的 SQL 查询

mysql - 关于rails 3 validates_presence_of :的问题

mysql - 优化SQL以获取1天的数据

php - 从 MySQL 行生成 QR 码

sql - (Oracle性能)基于 View 的查询会使用where子句限制 View 吗?

php - 按字母和数字排序 MySQL 结果(A1、B2、B3、C2)

mysql - SQL Select Query with single field as formatted and remaining fields as wildcard

java - 如何在java中将图像路径保存到sql数据库

sql - 查询以根据列获取隔天的记录