以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  库存计算,求帮助  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=116201)

--  作者:q1156741089
--  发布时间:2018/3/21 10:37:00
--  库存计算,求帮助
以下内容为程序代码:

1 """upd ate c set c.库存数量 = a.累计入库-b.累计出库 f rom (Se lect 物资名称, sum(数量) As 累计入库 f rom 物资明细 whe re 明细分类 = \'入库\' group by 物资名称) a, (Se lect 物资名称, sum(数量) As 累计出库 f rom 物资明细 wh ere 明细分类 = \'出库\' group by 物资名称) b,库存物资 c where a.物资名称=c.物资名称 And " & _"b.物资名称=c.物资名称 """"
条语句有一个BUG,就是只入库的情况下 ,无法计算。求帮助 ,怎么解决?
--  作者:有点甜
--  发布时间:2018/3/21 11:47:00
--  

set c.库存数量 = a.累计入库-b.累计出库

 

改成

 

set c.库存数量 = isnull(a.累计入库, 0)-isnull(b.累计出库, 0)


--  作者:q1156741089
--  发布时间:2018/3/21 13:22:00
--  
试了几次没有用呢?

--  作者:有点甜
--  发布时间:2018/3/21 15:15:00
--  

试试

 

update c set set c.库存数量 = isnull(a.累计入库, 0)-isnull(b.累计出库, 0) from (Select 物资名称, sum(数量) As 累计入库 from 物资明细 where 明细分类 = \'入库\' group by 物资名称) a, (Select 物资名称, sum(数量) As 累计出库 from 物资明细 where 明细分类 = \'出库\' group by 物资名称) b,库存物资 c where (a.物资名称=c.物资名称 or a.物资名称 is null) And (b.物资名称=c.物资名称 or b.物质名称 is null)


--  作者:q1156741089
--  发布时间:2018/3/21 15:31:00
--  
谢谢  行了  。。。 我刚刚试了一下 这种方法  “case when isnull(列名) then 0 end” 也没有弄出来
--  作者:q1156741089
--  发布时间:2018/3/21 15:43:00
--  
原来是要在where 加个空值判断