Oracle SQL-SELECT CASE WHEN列=(select语句)

时间:2020-10-22 13:15:31

标签: sql oracle case-when

我要选择带有SQL大小写表达式的“ up_year”。

如果可以的话,

SELECT CASE WHEN column1  = '2020' then 'up_year' else 'past_year' else end ;

但是尝试这样做时:不想每年更改。

SELECT 
CASE WHEN column1  = (select extract(year from sysdate) from dual) 
then 'up_year' 
else 'past_year' else end ;

2 个答案:

答案 0 :(得分:3)

您只想匹配当前年份。那么一种选择是使用TO_CHAR(,'yyyy')

SELECT CASE
         WHEN column1 = TO_CHAR(sysdate,'yyyy') then
          'up_year'
         ELSE
          'past_year'
       END AS "My Year"
  FROM tab   

答案 1 :(得分:2)

例如,您可以使用with子句

  with y as (select extract(year from sysdate) year from dual)
  SELECT CASE WHEN column1  = y.year then 'up_year' else 'past_year'  end from y -- and your table

公用表表达式(CTE)是一个命名的临时结果集,它存在于单个语句的范围内,以后可以在该语句中引用

您可以使用select into变量将提取输出分成两个步骤,然后使用它