SQL问题

比如

sql查询找到条件1时,结果记录下来,,没有匹配的继续走条件2,再继续匹配条件2的结果,走完了之后,结果记录下来,最后把没有匹配条件1,条件2的 也记录下来         这样查询出的结果就是我需要的  求问怎么写,              

select

case ${GBAN} 

  when 1 then GBAN01/100

  when 2 then GBAN02/100 + GBAN01/100

  when 3 then GBAN03/100 + GBAN02/100 + GBAN01/100

  when 4 then GBAN04/100 + GBAN03/100 + GBAN02/100 + GBAN01/100

  when 5 then GBAN05/100 + GBAN04/100 + GBAN03/100 + GBAN02/100 + GBAN01/100

  when 6 then GBAN06/100 + GBAN05/100 + GBAN04/100 + GBAN03/100 + GBAN02/100 + GBAN01/100

  when 7 then GBAN07/100 + GBAN06/100 + GBAN05/100 + GBAN04/100 + GBAN03/100 + GBAN02/100 + GBAN01/100

  when 8 then GBAN08/100 + GBAN07/100 + GBAN06/100 + GBAN05/100 + GBAN04/100 + GBAN03/100 + GBAN02/100 + GBAN01/100

  when 9 then GBAN09/100 + GBAN08/100 + GBAN07/100 + GBAN06/100 + GBAN05/100 + GBAN04/100 + GBAN03/100 + GBAN02/100 + GBAN01/100

  when 10 then GBAN10/100 + GBAN09/100 + GBAN08/100 + GBAN07/100 + GBAN06/100 + GBAN05/100 + GBAN04/100 + GBAN03/100 + GBAN02/100 + GBAN01/100

  when 11 then GBAN11/100 + GBAN10/100 + GBAN09/100 + GBAN08/100 + GBAN07/100 + GBAN06/100 + GBAN05/100 + GBAN04/100 + GBAN03/100 + GBAN02/100 + GBAN01/100

  when 12 then GBAN12/100 + GBAN11/100 + GBAN10/100 + GBAN09/100 + GBAN08/100 + GBAN07/100 + GBAN06/100 + GBAN05/100 + GBAN04/100 + GBAN03/100 + GBAN02/100 + GBAN01/100

  end as GBAN,

trim(GBCO),trim(MCDC),trim(GMOBJ),trim(GMSUB),trim(GMDl01),trim(GBSBL),trim(GBAPYC),trim(MCDC),trim(ABALPH),trim(MCDC)||trim(ABALPH) a FROM PRODDTA.F0902,PRODDTA.F0006,PRODDTA.F0901,PRODDTA.F0101 where gbaid = gmaid 

and  trim(aban8)=trim(gbsbl) 

--and trim(mcmcu)=trim(gbsbl)

and gbco=mcco 

and mcstyl='BS'

and GBCTRY = '${GBCTRY}' 

and GBFY = '${GBFY}' 

${if(len(GBCO)==0,"","and GBCO like '%"+GBCO +"%'")}

${if(len(GMOBJ)==0,"","and GMOBJ like '%"+GMOBJ +"%'")}

${if(len(GMSUB)==0,"","and GMSUB like '%"+GMSUB +"%'")}

${if(len(GBSBL)==0,"","and GBSBL like '%"+GBSBL +"%'")}


标红的就是条件,先满足这个trim(aban8)=trim(gbsbl) ,满足的查询出来,不满足的,继续匹配 trim(mcmcu)=trim(gbsbl)条件,满足的查询出来,这两个条件都不满足的(也就是GBSBL为空的)不满足这两个条件的也同时查询出来

FineReport baijiajun89757 发布于 2018-12-22 14:58 (编辑于 2018-12-22 15:24)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
4
touyuan001Lv6中级互助
发布于2018-12-22 15:11(编辑于 2018-12-22 15:43)

where 1=1 and a=b and c=d and (trim(aban8)=trim(gbsbl)  or trim(mcmcu)=trim(gbsbl) or GBSBL is null)


注意 and ( 1=1 or 2=2 or 3=3)  这种写法

  • baijiajun89757 baijiajun89757(提问者) 我完善了问题 你看看
    2018-12-22 15:21 
  • touyuan001 touyuan001 回复 baijiajun89757(提问者) 使用 OR 就可以了 具体写法我修改答案了。
    2018-12-22 15:43 
  • baijiajun89757 baijiajun89757(提问者) 回复 touyuan001 这样的话 他走了第一个等于 筛选出的数据 不走第二个等于了 你这样写 还走了一个等于,数据重复了 不行的
    2018-12-22 16:16 
  • touyuan001 touyuan001 回复 baijiajun89757(提问者) 那你在 or后面再套 and 啊。类似 and (1=2 or 2=2 or (1=1 and a=b))
    2018-12-22 16:21 
  • baijiajun89757 baijiajun89757(提问者) 回复 touyuan001 尝试了 太慢 查了一直再搜索 等久了服务器内存就炸了
    2018-12-22 16:29 
  • 2关注人数
  • 581浏览人数
  • 最后回答于:2018-12-22 15:43
    请选择关闭问题的原因
    确定 取消
    返回顶部