跨多个表进行聚合的查询



我是SQL的新手,我正在尝试创建一个数据库来管理一个小库存。这是db的结构:

DatabaseStructure

我需要创建一个查询,返回每种材料的总库存。因此,第一步是查找与材料相关的所有批次。其次,查找与每个批次相关的所有动作。然后,根据移动类型,将与每个移动相关的数量相加,但是(如果它是一个良好的收据是加(+),但如果它是一个库存提取是减(-))。

下面是一个表的示例,其中包含样例数据和期望的结果。

材料表

tbody> <<tr>2
MaterialIDMaterialDescription
1
select
mat.MaterialDescription,
sum(
case mov.MovementType
when 'Good receipt' then 1
when 'Inventory withdrawal' then -1
else 0 /* don't know what to do for other MovementTypes */
end * mov.Quantity
) as TotalInventory
from
Material as mat
left join Batch as bat on bat.MaterialID = mat.MaterialID
left join Movement as mov on mov.BatchID = bat.BatchID
group by
mat.MaterialDescription
;

相关内容

  • 没有找到相关文章

最新更新