本帖最后由 jiangcj369 于 2022-9-15 15:39 编辑
主子表就是inner join
/**当前库存=上期结存+本期入库-本期出库,要处理好语句中的单据日期和当期及上期的时间关系
**t1表是入库单主表和子表聚合
**t2表是出库单主表和子表聚合
**t3表是上期结存表,本身就是按料聚合后的结果取过来的
**/
select a.料号,当期当前库存=isnull(t1.入库总数,0)-isnull(t2.出库总数,0)+isnull(t3.上期结存数,0) from 物品表 a
left join
(select b2.料号,sum(isnull(b2.入库数,0)) as 入库总数 from 各种入库单 b1
inner join 各种入库单明细 b2 on b1.id=b2.id where b1.单据日期 >=当期月初 group by b2.料号) t1 on t1.料号=a.料号
left join
(select b4.料号,sum(isnull(b4.出库数,0)) as 出库总数 from 各种出库单 b3
inner join 各种入库单明细 b4 on b3.id=b4.id where b3.单据日期>=当期月初 group by 4.料号) t2 on t2.料号=a.料号
left join
(select c.料号,c,上期结存数 from 上期结存表 c) t3 on t3.料号=a.料号
大致语句就是这个意思,我是随意写的,没有模拟表。
|