Foxtable(狐表)用户栏目专家坐堂 → [求助]s elect 子查询求助


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

主题:[求助]s elect 子查询求助

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]s elect 子查询求助  发帖心情 Post By:2016/1/21 10:41:00 [只看该作者]

Tables(e.Form.Name & "_Table1").Fill("s elect 工序,道次,卷号,母卷号,牌号,厚度,宽度,重量,起始时间,结束时间,投料量,成材率,作业分钟数,(s lect top 1 [检测时间] from {性能检测} b where a.记录标记1 = b.工序记录标记 order by 检测时间 desc) as 检测时间......

上面的子查询语句中,我希望实现这样的功能:
如果(s lect top 1 [检测时间] from {性能检测} b where a.记录标记1 = b.工序记录标记 order by 检测时间 desc) as 检测时间 查找不到数据,那么就执行:
(s lect top 1 [检测时间] from {销售出库} b where a.记录标记1 = b.工序记录标记 order by 检测时间 desc) as 检测时间
如果还是找不到,就不用管了,就让查询表上空着
谢谢老师!

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/21 10:49:00 [只看该作者]

(case when (s lect count(*) from {性能检测} b where a.记录标记1 = b.工序记录标记) > 0 then s lect top 1 [检测时间] from {性能检测} b where a.记录标记1 = b.工序记录标记 order by 检测时间 desc Else (s lect top 1 [检测时间] from {销售出库} b where a.记录标记1 = b.工序记录标记 order by 检测时间 desc) end) as 检测时间


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


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

把下面代码放入项目后执行错误,请老师看看
(case when (s elect count(*) from {性能检测} b where a.记录标记1 = b.工序记录标记) > 0 then s elect top 1 [检测时间] from {性能检测} b where a.记录标记1 = b.工序记录标记 order by 检测时间 desc Else (s elect top 1 [日期] from {质量说明} b where a.记录标记1 = b.销售记录标记 order by 日期 desc) end) as 检测时间

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/21 11:09:00 [只看该作者]

你的事什么数据库?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/21 11:10:00 [只看该作者]

sqlserver肯定就是这样写。

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


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

是SQL的,如果上面的代码没有问题的话,我再去试试

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


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

老师,我找到原因了,少了一对括号造成的错误。
(case when (s elect count(*) from {性能检测} b where a.记录标记1 = b.工序记录标记) > 0 then s elect top 1 [检测时间] from {性能检测} b where a.记录标记1 = b.工序记录标记 order by 检测时间 desc Else (s elect top 1 [日期] from {质量说明} b where a.记录标记1 = b.销售记录标记 order by 日期 desc) end) as 检测时间

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/21 12:06:00 [只看该作者]

哦,是......


 回到顶部