2014-02-15 59 views
0

我正在使用以下查询来返回帐单总额和税金的总额,税额和总额。但问题是因为我使用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; 

回答

1

你可以只添加值获得的总和:

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; 
+0

谢谢...好诀窍:) – Firu