Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

库存查询难题

hello  发表于:2009-05-26 16:17:56  
复制

期初+收入-发出=现存量(这个公式只反映了3个不同编码材料的实时现存数量)。

在透视表中,能反映出3个品种材料的1月、2月、3月期初数量吗?或添辅助列,或用SQL


2月期初=1月期初+1月收入-1月发出

3月期初=2月期初+2月收入-2月发出

4月以此类推。。。

 

 

 

不知道这个sql语句如何写?  表在附件里面。

点击下载此附件

 

Top
hello 发表于:2009-05-26 16:21:54



hello 发表于:2009-05-26 16:23:45

可能还不够详细,我再详细一点

再详细一点
1月期末=1月期初+1月收入-1月发出
2月期初=1月期末=1月期初+1月收入-1月发出
2月期末=2月期初+2月收入-2月发出
3月期初=2月期末=2月期初+2月收入-2月发出
3月期末=3月期初+3月收入-3月发出



hello 发表于:2009-05-26 19:12:21
希望有高手能帮帮我。

张文 发表于:2009-05-26 20:04:15

点击下载此附件

给你一个例子,参考一下吧。

示例中,比你想到的还要全面一些。



hello 发表于:2009-05-26 20:38:50
谢谢zhangwen860614。不过对于我这个表来说。还是不一样。 我需要sql语句能直接得出结果。 你给我的是几个表的合并起来。还是有点不一样。 稍微有点不一样。语句还是天差地别。谢谢大家帮忙。希望能写一个sql语句能解决这个问题。 其实我这样的问题也算比较普遍的。

朱亦文 发表于:2009-05-26 23:24:25

名称 年 月 初 收 出 存
涤纶布 2009 1 100 100 50 150
麻布 2009 1 100 100 50 150
棉布 2009 1 100 100  200
涤纶布 2009 2 150 100 50 200
麻布 2009 2 150  50 100
棉布 2009 2 200  50 150
涤纶布 2009 3 200 100 50 250

这是结果


步骤如下:

创建第一个查询 vStart, 求期初

查询的SQL语句:

SELECT biao.名称, Sum(biao.期初) AS 初
FROM biao
GROUP BY biao.名称;


创建第二个查询 vMonth, 求每月的收入和发出合计

查询的SQL语句:

SELECT Year([日期]) AS 年, Month([日期]) AS 月, biao.名称, Sum(biao.收入) AS 收, Sum(biao.发出) AS 出
FROM biao
GROUP BY Year([日期]), Month([日期]), biao.名称;


创建第三个查询 v库存, 最终得出每月的初、收、发、存

查询的SQL语句:

SELECT M.名称, M.年, M.月,
   (SELECT 初 FROM vStart AS S WHERE S.名称=M.名称) +
   NZ((SELECT SUM(收入) FROM biao AS B WHERE B.名称=M.名称 AND B.日期<CDATE(M.年 & "-" & M.月 & "-1")),0) -
   NZ((SELECT SUM(发出) FROM biao AS C WHERE C.名称=M.名称 AND C.日期<CDATE(M.年 & "-" & M.月 & "-1")),0) AS 初,
   M.收, M.出, [初]+NZ([收],0)-NZ([出],0) AS 存
FROM vMonth AS M;

 


只需要打开 v库存 查询,即可查看库存



朱亦文 发表于:2009-05-26 23:25:06
这个问题具有普遍意义,因此答之,大家可以参照学习

总记录:7篇  页次:1/1 9 1 :