现有两张表,一张入库表,一张出库表,想从这两张总结数据:
入库表数据:
物资名称 物资编码 入库数量
笔记本 B0001 10
笔记本 B0001 20
铅笔 B0002 5出库表数据:
物资名称 物资编码 出库数量
笔记本 B0001 9
笔记本 B0001 10
铅笔 B0002 2现想要总结出数据如下:
物资名称 物资编码 入库数量 出库数量 库存数量
笔记本 B0001 30 19 11
铅笔 B0002 5 2 3请高手帮忙!
入库表数据:
物资名称 物资编码 入库数量
笔记本 B0001 10
笔记本 B0001 20
铅笔 B0002 5出库表数据:
物资名称 物资编码 出库数量
笔记本 B0001 9
笔记本 B0001 10
铅笔 B0002 2现想要总结出数据如下:
物资名称 物资编码 入库数量 出库数量 库存数量
笔记本 B0001 30 19 11
铅笔 B0002 5 2 3请高手帮忙!
解决方案 »
- 老生常谈的问题,希望高手不吝赐教,关于jquery在windows2003调用webservice
- 使用art.dialog.load加载登陆页返回的问题。
- js 中的 if else 判断 有个数限制吗(比如有10个if else)
- 文件下载超难问题,高手请进。(高分)
- 你们装MSDN是怎么选择的?
- OnClick和OnCommand有什么区别?请举个例子
- 用VB.NET如何实现智能化文件输出
- easyui tree +asp.net 动态添加
- 初次使用XslTransform出错,那位达人进来看看???
- 水晶报表打印不出文本的问题
- 高手指点,如何通过CheckBoxList选中的项作为SQL语句的条件查询出对应结果出来?
- 如何使用Cookies?
from (select 物资名称,物资编码 from 入库表 union select 物资名称,物资编码 from 出库数据) as a
left join 入库表 as b on a.物资名称=b.物资名称 and a.物资编码=b.物资编码
left join 出库表 as c on a.物资名称=c.物资名称 and a.物资编码=c.物资编码
group by a.物资名称,a.物资编码
不过,这种程序的(背景下的)设计逻辑不能用于真正的财务软件产品,只能作为一个课堂练习。真正的产品由于有着数千万记录,而库存、总账数据经常大量地需要及时查询计算,所以不可能是临时去汇总总入库数量和总出库数量的。真正的财务计算,需要及时将流水帐过账到日记账、总账中,也就是说每一天、每一个月的总入库数量、总出库数量、库存数量和成本是立刻做为静态查询出来的,而不是靠汇总计算出来的。
select a.物资名称,a.物资编码,isnull(sum(入库数量),0),isnull(sum(出库数量),0),
isnull(sum(入库数量),0)-isnull(sum(出库数量),0)
from (select 物资名称,物资编码 from 入库表 union select 物资名称,物资编码 from 出库数据) as a
left join 入库表 as b on a.物资名称=b.物资名称 and a.物资编码=b.物资编码
left join 出库表 as c on a.物资名称=c.物资名称 and a.物资编码=c.物资编码
group by a.物资名称,a.物资编码
(a.入库数量-isnull(b.出库数量,0)) 库存数量
from
(select 物资名称,物资编码,sum(入库数量) 入库数量 from 入库表 group by 物资名称,物资编码) a
left join
(select 物资名称,物资编码,sum(出库数量) 出库数量 from 出库表 group by 物资名称,物资编码) b
on a.物资编码=b.物资编码