MySQL:代表第三列获取具有乘以两列的列的总和

时间:2017-05-04 04:44:05

标签: mysql eloquent laravel-5.3

我试图获取所有行的总和,其中有两个列值,其中where where condition但是得到了一些mysql的错误。尝试一些例子后,我实现了我的结果,但我不知道这是对的:

表: store_stocks

enter image description here

我只想根据增值税,非增​​值税和总存量,计算库存数量,数量乘以数量。

我刚刚创建了该查询:

SELECT sum(qty*sale_price) as total_stock, 
 (select sum(qty*sale_price) from store_stocks where vat_status = 0 and store_id = 8) as non_vat_stock, 
 (select sum(qty*sale_price) from store_stocks where vat_status = 1 and store_id = 8) as with_vat_stock 
 FROM `store_stocks` where store_id = 8 group by store_id

及其显示结果:

enter image description here

任何人都可以告诉我有没有其他方法可以实现这一点,因为我认为这个查询有点复杂,每次我在子查询中使用的地方,我还必须在{中实现此查询{1}}。

1 个答案:

答案 0 :(得分:1)

您不需要子查询,您可以使用sum()中的条件使其仅汇总特定记录:

SELECT sum(qty*sale_price) as total_stock, 
       sum(if(vat_status = 0, qty*sale_price, 0)) as non_vat_stock, 
       sum(if(vat_status = 1, qty*sale_price, 0)) as with_vat_stock 
 FROM `store_stocks` where store_id = 8 group by store_id

您也可以使用case表达式代替if()函数。