如何使用SQL查询将总数量和消耗的数量转换为单个结果
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用SQL查询将总数量和消耗的数量转换为单个结果相关的知识,希望对你有一定的参考价值。
我有下表
1。单位表:
id | Unit_name
1 | Nos.
2 | lts
2。物料表:
id | Material_name
1 | bricks
2 | Cement
3。 Grn表:
id | material_id | qty | unit
1 | 1 | 100 | 1
2 | 2 | 500 | 1
4。消费表:
id | material_id | qty | unit
1 | 1 | 50 | 1
2 | 2 | 100 | 1
预期结果如下:
Material Name | Unit | Total Qty | Total Consumed Qty | Stock
Bricks | Nos. | 100 | 50 | 50
Cement | Nos. | 500 | 100 | 400
因此,在上述结果中,将从Grn表中获取总数量,从消耗表中获取总消费数量,库存是两者的差,应按物料名称分组。
在以下查询中,仅获取总计数量的结果,还需要您的帮助来获取消耗的数量。
我是SQL的新手,虽然确实尝试过,但是在这一点上仍然停留并需要帮助。
Select sm.material_name as 'Material Name', mu.unit_name as 'Unit Name' , sum(g.qty) as 'Total Qty' from grn g
JOIN material_table.sm ON g.material_name = sm.id
JOIN material_unit.mu ON g.unit_name = mu.id
GROUP by material_name
答案
根据您的样本数据,我认为GROUP BY
似乎没有必要。您的查询和示例数据不一致。但是根据您的问题和示例数据:
select m.material_name, u.unit_name, grn.qty as total, c.qty as consumed,
coalesce(gnr.qty, 0) - coalesce(c.qty, 0) as stock
from material mh join
unit u
on m.id = u.id left join
grn
on g.head_id = mh.id left join
consumption c
on c.sub_material_id = m.id ;
如果任何表的每种材料有多行,那么这不是正确的解决方案。如果是这样,我建议您问一个[[new问题,并提供适当的样本数据和所需的结果。
以上是关于如何使用SQL查询将总数量和消耗的数量转换为单个结果的主要内容,如果未能解决你的问题,请参考以下文章