【问题标题】:how to using BETWEEN in CASE如何在 CASE 中使用 BETWEEN
【发布时间】:2021-12-20 01:09:36
【问题描述】:

所以我想提出一个案例,如果在接受年份和当前年份(sysdate)之间是 1 到 5,它将是 1 级和 6 到 10 级 2

我使用这样的代码

select first_name,
       case trunc(months_between(sysdate, hire_date) / 12)
         when between 1 and 5 then
          '1'
         when between 6 and 10 then
          '2'
         when between 11 and 15 then
          '3'
         else
          '4'
       end as information
  from employees;

但在 1 到 5 之间出现错误提示“缺少关键字”

在哪里 EMPLOYEES 表包含 EMPLOYEE_ID,FIRST_NAME,HIRE_DATE

【问题讨论】:

    标签: sql oracle oracle11g


    【解决方案1】:

    因为表达式应该单独写在每个when子句之后,例如

    select first_name,
           case 
             when trunc(months_between(sysdate, hire_date) / 12) between 1 and 5 then
              '1'
             when trunc(months_between(sysdate, hire_date) / 12) between 6 and 10 then
              '2'
             when trunc(months_between(sysdate, hire_date) / 12) between 11 and 15 then
              '3'
             else
              '4'
           end as information
      from employees;
    

    或者更优雅的选择是

    with emp(first_name,year_diff) as
    (
     select first_name, trunc(months_between(sysdate, hire_date) / 12) from employees
    )
    select first_name,
           case 
             when year_diff between 1 and 5 then
              '1'
             when year_diff between 6 and 10 then
              '2'
             when year_diff between 11 and 15 then
              '3'
             else
              '4'
           end as information
      from emp;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-04
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      • 1970-01-01
      相关资源
      最近更新 更多