• 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 
  • 相关阅读:
    linux下面发布80端口的服务
    visio 安装
    SSH进行登录远程主机,实验室网站,项目
    论文遇到的问题
    ubuntu设置目录容量大小
    ubuntu 磁盘分区
    SpringBoot打成的jar包发布,shell关闭之后一直在服务器运行
    docker的安装,使用
    多线程下载文件,ftp文件服务器
    抖音红人,
  • 原文地址:https://www.cnblogs.com/kellen451/p/7813222.html
Copyright © 2020-2023  润新知