SQL选择日期并相应地分配

时间:2018-06-18 17:07:03

标签: sql select db2

我正在使用SQL Oracle;

我想执行以下操作,如果列上的YEAR等于当前年份,那么我想将值0分配给名为 ano 的新列,如果它是a提前一年,然后我希望它是1,依此类推,如果它低于当前年份,那么我希望它为-1,依此类推。

包含日期的列名称为 KALW_DATE

SELECT *,
       CASE
          WHEN YEAR(KALW_DATE) > YEAR(NOW()) THEN (YEAR(KALW_DATE) - YEAR(NOW()))
          WHEN YEAR(KALW_DATE) < YEAR(NOW()) THEN (YEAR(KALW_DATE) + YEAR(NOW())
          ELSE 0
       END as ano
FROM   tablename; 

但是我收到错误说"keyword FROM not found where expected"我也正在连接DB2,如果这改变了什么。

2 个答案:

答案 0 :(得分:0)

你似乎只是想要:

SELECT (YEAR(KALW_DATE) - YEAR(NOW())) as ano

对于您的代码,括号在第二个THEN子句中不平衡。

答案 1 :(得分:0)

Oracle没有YEAR()函数(至少不是我正在运行的版本)。您必须使用EXTRACT()函数,如下所示:

SELECT *,
  (extract(year from KALW_DATE) - extract(year from current_date)) as ano
FROM   tablename;