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

Oracle SQL - SELECT CASE WHEN column = ( select statement)

我想 select "up_year" 和 SQL 大小写表达式。

如果我这样做没问题:

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 ;

你可以使用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

A common table expression (CTE) is a named temporary result set that exists within the scope of a single statement and that can be referred to later within that statement

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

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

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