以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]统计筛选出入库的物料数量SQL语句  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=70832)

--  作者:loongtai
--  发布时间:2015/6/29 22:17:00
--  [求助]统计筛选出入库的物料数量SQL语句
物料出入库表分主表和明细表,主表有出入库编号,转入仓,转出仓 三列,明细表有出入库编号,物料编号,出入库数量三列。
如何用sql语句筛选出每种物料剩余的数量(入库数量-出库数量)? 类似下面的效果

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150629221818.png
图片点击可在新窗口打开查看

这样方便在进行出库操作时,能知道每种物料还有多少可以领用。
[此贴子已经被作者于2015/6/29 22:20:37编辑过]

--  作者:大红袍
--  发布时间:2015/6/29 22:35:00
--  
select 物料编号, sum(入库)-sum(出库)  as 库存 f rom {出入库明细表} group by 物料编号
--  作者:loongtai
--  发布时间:2015/6/30 8:14:00
--  回复:(大红袍)select 物料编号, sum(入库)-sum(出库...
这个好像不行,因为出入库明细表里的数量列是不分出库和入库数量的,判断物料是进入或出去哪个库,是看主表的转入仓或转出仓的,对于转入仓,这个数量对应的是入库,同时相对转出仓,这个数量对应的则是出库。不知说清楚了没?

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150630081523.png
图片点击可在新窗口打开查看


--  作者:大红袍
--  发布时间:2015/6/30 9:30:00
--  
select 物料全编号, (sum(iif(转出仓 is null,数量,0)) - sum(iif(转入仓 is null,数量,0))) as 库存 f rom (select * f rom {主表} a inner join {明细} b on a.物料操作编号 = b.物料操作编号) group by 物料全编号
--  作者:大红袍
--  发布时间:2015/6/30 9:30:00
--  
 再不行,请上传具体例子
--  作者:loongtai
--  发布时间:2015/6/30 10:33:00
--  
统计要求,按物料全编号和到货编号两项统计,即相同物料全编号且相同到货编号进行数量统计
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:物料出入库统计.zip



--  作者:大红袍
--  发布时间:2015/6/30 10:38:00
--  
select 物料全编号, 到货编号, (sum(iif(转出仓 is null,数量,0)) - sum(iif(转入仓 is null,数量,0))) as 库存 f rom (select * f rom {物料出入库主表} a inner join {物料操作明细表} b on a.物料操作编号 = b.物料操作编号) group by 物料全编号,到货编号
--  作者:loongtai
--  发布时间:2015/6/30 10:59:00
--  
在给的例子里运行正常,怎么到自己的项目里就不正常了?

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150630105935.png
图片点击可在新窗口打开查看


--  作者:大红袍
--  发布时间:2015/6/30 11:05:00
--  

 sqlServer数据库就改一下iif改成case when

 

 参考语法 http://blog.sina.com.cn/s/blog_61fbf8d10100lian.html

 


--  作者:loongtai
--  发布时间:2015/6/30 14:42:00
--  
参照你给的帮助,试写了下,还是没得到想要的结果。

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150630144241.png
图片点击可在新窗口打开查看