zoukankan      html  css  js  c++  java
  • oracle数据库查询语句case的用法

    实现功能:

    1.先查询status=2的记录,如果查询到记录则返回第一条记录的Product_Name;
    2.如果查询不到status=2的记录,则判断status=1的记录是否存在,不存在则返回“请耐心等待!”,存在则返回“拆烟完毕!”

    实现思路:

    1、使用case语句返回不同的内容:

    case语句格式:

    case
    
    when 判断语句1 then 返回1
    
    when 判断语句2 then 返回2
    
    ……
    
    else 返回n
    
    end

    2、解决无记录时需要返回一条null的数据:

    select Product_name 
    
    from v_supply_sj 
    
    union select null from dual

    3、解决有记录的情况下还会附带一条null数据的问题:

    通过判断初始查询结果count(*)是否等于0来决定返回的记录数

     最终查询语句:

    select case 
    when t1.Product_name is not null then t1.product_name  
    when t2.Product_name is not null then '拆烟完毕' 
    else '请耐心等待' end as ledtext from  
    (select rownum as q, Product_name from (select  Product_name from( select rownum as p,Product_name from v_supply_sj where to_addr = 'SJ03' and bill_type=5 and status = 2 and up_down = '1'  ) where rownum<=1  union select null from dual )
    where rownum<= case 
    when (select count(*) from (select Product_name from( select rownum as p,Product_name from v_supply_sj where to_addr = 'SJ03' and bill_type=5 and status = 2 and up_down = '1'  ) where rownum<=1  union select null from dual ))=1 
    then 1 else
    (select count(*) from (select Product_name from( select rownum as p,Product_name from v_supply_sj where to_addr = 'SJ03' and bill_type=5 and status = 2 and up_down = '1'  ) where rownum<=1  ) ) end )  t1 left join 
    (select rownum as q, Product_name from (select  Product_name from( select rownum as p,Product_name from v_supply_sj where to_addr = 'SJ03' and bill_type=5 and status = 1 and up_down = '1'  ) where rownum<=1  union select null from dual )
    where rownum<= case 
    when (select count(*) from (select Product_name from( select rownum as p,Product_name from v_supply_sj where to_addr = 'SJ03' and bill_type=5 and status = 1 and up_down = '1'  ) where rownum<=1  union select null from dual ))=1 
    then 1 else
    (select count(*) from (select Product_name from( select rownum as p,Product_name from v_supply_sj where to_addr = 'SJ03' and bill_type=5 and status = 1 and up_down = '1'  ) where rownum<=1  ) ) end )   t2 on t1.q=t2.q 
  • 相关阅读:
    Java可变参数
    为什么static方法中不可以调用非static方法
    用注解@DelcareParents实现引用增强
    在SpringBoot中用SpringAOP实现日志记录功能
    梳理一下我理解的aop
    包裹iframe的div与iframe存在高度差的问题解决方案
    非跨域情况下iframe 高度自适应的问题解决(一)
    flex布局较之float布局的优点新发现
    webpack4 动态导入文件 dynamic-import 报错的解决方法
    vue chrome 浏览器调试工具devtools插件安装
  • 原文地址:https://www.cnblogs.com/kellen451/p/7813222.html
Copyright © 2011-2022 走看看