以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  全连接问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=104203)

--  作者:Springamy
--  发布时间:2017/7/25 11:35:00
--  全连接问题

问题如下: 以下sql语句得到的数据 并不完全,在逻辑库存中有而库存中没有的数据完全显示不出来,请问,我是不是需要用以下sql 作为一个临时表

然后再跟逻辑库存full join 一次?

select 仓库地点,产品线,库存类型,仓库属性,库存表.条码,BOM编码,isnull(计算数量,0) as 计算数量,isnull(数量,0) as 条码数量,isnull(计算数量,0)-isnull(数量,0)as 差异数量,采购合同号,入库日期 fro m 库存表 full join (select 条码,条码数量 as 计算数量 fro m (select 条码,sum(数量) as 条码数量 fro m (select 条码,sum(数量)as 数量 fro m (select 条码,sum(数量) as 数量 fro m 期初表 where qcid = 10 group by 条码 un ion all select 条码,sum(数量) as 数量 fro m (select 入库日期,采购合同号,产品线,库存类型,仓库属性,BOM编码,产品型号,仓库地点,条码,sum(数量) as 数量 fro m (select * fro m 入库条码明细) as a left join 入库表 on a.rkid = 入库表._identify where 入库日期 >\'6/30/2017\'and 入库日期<=\'7/24/2017\' group by 入库日期,采购合同号,产品线,库存类型,仓库属性,BOM编码,产品型号,仓库地点,条码) as b group by 条码) as c group by 条码 un ion all select 条码,-数量 fro m (select * fr om 出库条码明细) as f left join 出库表 on f.ckid = 出库表._identify where 出库日期  <=\'7/24/2017\'And 出库日期 > \'6/30/2017\') as g group by 条码) as h where 条码数量 <> 0) as i on 库存表.条码 = i.条码 where 数量 > 0

 


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


--  作者:有点甜
--  发布时间:2017/7/25 11:50:00
--  

逻辑库存表,可以加上其余列的,如

 

select 条码,sum(数量) as 数量 from 期初表 where qcid = 10 group by 条码

 

改成

 

select 条码,sum(数量) as 数量,max(仓库地点) as 仓库, max(产品线) as 产品线 from 期初表 where qcid = 10 group by 条码

 

最后获取值的时候,可以对比库存、逻辑库存,看哪个有值,就取哪一个。

 

再有就是,你逻辑有问题,你的库存表,理应包含所有的库存信息,期初、入库、出库有的,都添加到库存表去,才对。


--  作者:Springamy
--  发布时间:2017/7/25 14:10:00
--  有点看不懂,如图

最后获取值的时候,可以对比库存、逻辑库存,看哪个有值,就取哪一个。甜大,这一段我有点看不懂,得出的数据

怎么对比?

 

我解释下我的库存问题,我是故意在逻辑库存和实际库存中各添加一条数据来测试的,实际上,逻辑库存跟实际库存的

数据是一样的。这样做是因为在实际中录入数据的时候可能突然断电或者断网 等各种原因导致数据只存在入库表中

还没有来得及到库存表中,或者别的原因导致逻辑库存中的数据不见了,而实际库存的还在等等  各种原因。。。。


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

--  作者:有点蓝
--  发布时间:2017/7/25 15:44:00
--  
请导出部分数据做测试
--  作者:有点甜
--  发布时间:2017/7/25 17:18:00
--  
以下是引用Springamy在2017/7/25 14:10:00的发言:

最后获取值的时候,可以对比库存、逻辑库存,看哪个有值,就取哪一个。甜大,这一段我有点看不懂,得出的数据

怎么对比?

 

 

比如,本来写的 select 仓库地点,产品线,库存类型,仓库属性

 

理应改成 select isnull(库存表.仓库地点, i.仓库地点), isnull(库存表.产品线, i.仓库地点), isnull(库存表.库存类型, i.库存类型)

 


--  作者:Springamy
--  发布时间:2017/7/25 18:37:00
--  换了个算法,问题如下

蓝大,我换了个算法:

两个表: 计算库存,实际库存

循环遍历实际库存的时候执行正确,

到循环计算库存,要把计算库存中有,而实际库存中没有的数据找出来添加到

实际库存中,然后计算差异库存

现在是遍历dt3 计算库存的代码出错,可以帮我看看错在哪里吗?


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

--  作者:Springamy
--  发布时间:2017/7/25 18:38:00
--  我明白了,谢谢
谢谢
--  作者:Springamy
--  发布时间:2017/7/25 18:41:00
--  ps:我是明白5楼甜大说的内容了,遍历问题没有解决
遍历没有解决
--  作者:有点蓝
--  发布时间:2017/7/25 20:15:00
--  
dim dt2 as datatable = cmd.ExecuteReader(true)

......

dt2.Save
tables().datasource = dt2

最后datatables().load是干嘛用的?