我正在使用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,如果这改变了什么。
答案 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;