我使用以下查询返回账单的总计、税金以及总金额和税金的总计。但问题是因为我使用 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
将添加一个总计列,其中 id
为 NULL
。
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/