以文本方式查看主题 - 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 -- 哦,是...... |