Foxtable(狐表)用户栏目专家坐堂 → union sql 语句的问题


  共有1589人关注过本帖树形打印复制链接

主题:union sql 语句的问题

美女呀,离线,留言给我吧!
Springamy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
union sql 语句的问题  发帖心情 Post By:2017/7/19 14:49:00 [只看该作者]

以下sql 用实例日期数据,可以正确的把数据查找出来,如图一,但是一旦调用函数,用函数中的sql,如图3,

有出库数据的期初表,生成的数据有上个期初表的跟当前期初表的

,也就是说调用一次函数,会生成2个期初表,前一个期初跟当前期初,条码的数量也变成2个了,

是我sql 本身错了,还是 函数sql中代表上个期初和当前期初的值错了,dr2("期初日期"),qc 等

 

 

select * fr om (select 入库日期,采购合同号,产品线,库存类型,仓库属性,BOM编码,产品型号,仓库地点,条码, sum(条码数量) as 数量 fr om (select 入库日期,采购合同号,产品线,库存类型,仓库属性,BOM编码,产品型号,仓库地点,条码,sum(数量) as 条码数量 fr om 期初表 where qcid = " & dr2("_Identify") & "group by _Identify,qcid,入库日期,采购合同号,产品线,库存类型,仓库属性,BOM编码,产品型号,仓库地点,条码 uni on all Select 入库日期,采购合同号,产品线,库存类型,仓库属性,BOM编码,产品型号,仓库地点,条码,sum(数量) As 条码数量 fro m (Select * fr om 入库条码明细) As a left join 入库表 on a.rkid = 入库表._identify where 入库日期 >'" & dr2("期初日期") & "'and 入库日期 <='" & qc & "' group by 入库日期,采购合同号,产品线,库存类型,仓库属性,BOM编码,产品型号,仓库地点,条码 uni on all Select 入库日期,采购合同号,产品线,库存类型,仓库属性,BOM编码,产品型号,仓库地点,条码,-数量 fr om (Select * fr om 出库条码明细) As a left join 出库表 on a.ckid = 出库表._identify where 出库日期<='" & qc & "'And 出库日期 > '" & dr2("期初日期") & "') As c group by 入库日期,采购合同号,产品线,库存类型,仓库属性,BOM编码,产品型号,仓库地点,条码) As e where 数量 > 0

 

示例:

select * f rom (select 入库日期,采购合同号,产品线,库存类型,仓库属性,BOM编码,产品型号,仓库地点,条码, sum(条码数量) as 库存 fr om (select 入库日期,采购合同号,产品线,库存类型,仓库属性,BOM编码,产品型号,仓库地点,条码,sum(数量) as 条码数量 fr om 期初表 where qcid = 7 group by _Identify,qcid,入库日期,采购合同号,产品线,库存类型,仓库属性,BOM编码,产品型号,仓库地点,条码 un ion all select 入库日期,采购合同号,产品线,库存类型,仓库属性,BOM编码,产品型号,仓库地点,条码,sum(数量) as 条码数量 fr om (select * fr om 入库条码明细) as a left join 入库表 on a.rkid = 入库表._identify where 入库日期 >'3/31/2017'and 入库日期<='4/30/2017' group by 入库日期,采购合同号,产品线,库存类型,仓库属性,BOM编码,产品型号,仓库地点,条码 uni on all select 入库日期,采购合同号,产品线,库存类型,仓库属性,BOM编码,产品型号,仓库地点,条码,-数量 fro m (select * f rom 出库条码明细) as a left join 出库表 on a.ckid = 出库表._identify where 出库日期  <='4/30/2017'And 出库日期 > '3/31/2017') as c group by 入库日期,采购合同号,产品线,库存类型,仓库属性,BOM编码,产品型号,仓库地点,条码) as e where 库存 > 0


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

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

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

 回到顶部
美女呀,离线,留言给我吧!
Springamy
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
找到原因了,是循环的问题吗?如图  发帖心情 Post By:2017/7/19 15:10:00 [只看该作者]

上个期初的日期有两个,是for循环的问题吗?是不是退出循环就可以了

 


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

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


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/19 15:15:00 [只看该作者]

你应该加入代码判断的,qc是你传入的参数。

 

If dr("期初日期") = qc Then

 

End If


 回到顶部
美女呀,离线,留言给我吧!
Springamy
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
谢谢,已经可以了  发帖心情 Post By:2017/7/19 15:34:00 [只看该作者]

但是我还是有点不懂,为什么加这个判断就可以了

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/19 16:42:00 [只看该作者]

以下是引用Springamy在2017/7/19 15:34:00的发言:
但是我还是有点不懂,为什么加这个判断就可以了

 

你循环的是所有的行。比如你有 10 条数据,自然会触发 9 次。

 

要么你根据日期查询到对应的行,要么加入判断。


 回到顶部