以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]s elect 子查询求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=80355)

--  作者:huangfanzi
--  发布时间:2016/1/21 10:41:00
--  [求助]s elect 子查询求助
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 检测时间
如果还是找不到,就不用管了,就让查询表上空着
谢谢老师!

--  作者:大红袍
--  发布时间: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
--  发布时间: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 检测时间
--  作者:大红袍
--  发布时间:2016/1/21 11:09:00
--  
你的事什么数据库?
--  作者:大红袍
--  发布时间:2016/1/21 11:10:00
--  
sqlserver肯定就是这样写。
--  作者:huangfanzi
--  发布时间:2016/1/21 11:16:00
--  
是SQL的,如果上面的代码没有问题的话,我再去试试
--  作者:huangfanzi
--  发布时间: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 检测时间

--  作者:大红袍
--  发布时间:2016/1/21 12:06:00
--  

哦,是......