Foxtable(狐表)用户栏目专家坐堂 → [求助]子查询语句中计算的写法


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

主题:[求助]子查询语句中计算的写法

帅哥哟,离线,有人找我吗?
huangfanzi
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]子查询语句中计算的写法  发帖心情 Post By:2020/4/27 19:11:00 [只看该作者]

"(S elect Sum(数量) from {库存} b where a.编号 = b.合同编号) As 已执行,(数量 - (S elect Sum(数量) from {库存} b where a.编号 = b.合同编号)) As 待执行, "
老师,上面语句是子查询语句,能正常得到结果,可我感觉这样写是不是浪费效率了,明明已执行已经算出了,后面的语句为什么不能改写成: 数量 - 已执行 As 待执行 

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/27 20:43:00 [只看该作者]

要再套一层,对于同一层,是无法知道子查询结果的

select *, 数量 - 已执行 As 待执行 from (select ....., (S elect Sum(数量) from {库存} b where a.编号 = b.合同编号) As 已执行,(数量 - (S elect Sum(数量) from {库存} b where a.编号 = b.合同编号)) As 待执行, .... from xxxxx) as k

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2020/4/27 23:05:00 [只看该作者]

已解决,加个 ISNULL 就行了!!
老师,遇到由于没有 “已执行”,而导致 “待执行” 为空的情况应该如何办?正常情况下,如果已执行为空时,就应该是0

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

下面是我的查询语句:

ppyf = "(S elect Sum(数量) from {库存} b where a.编号 = b.合同编号) As 已执行,(数量 - (S elect Sum(数量) from {库存} b where a.编号 = b.合同编号)) As 待执行, "
zd = "属性,类型,类别,签订日期,编号,附属编号,我方主体代码,我方主体,我方简称,对方主体代码,对方主体,对方简称,品名,规格,单位,数量," & ppyf & "单价,金额,税率,交割方式,交割起始日期,交割结束日期,交割库区代码,交割库区,交割库区主体,交割库区简称,运输方式,单证员,业务员,附件,备注,状态,执行状态"
t.Fill("s elect " & zd & " From {合同} As a Where " & flt & " ORDER BY a.编号" ,"ShcsErpSql",True)
[此贴子已经被作者于2020/4/27 23:07:33编辑过]

 回到顶部