错误:第 22 行或附近"dec"语法错误:...当 to_char(t.work_date,'mm')=12 时t.work_day结束。12 月


select  sum(CASE WHEN to_char(t.work_date,'mm')=12 THEN t.work_day END ) dec
FROM employee t;

直接的问题是dec是一个保留关键字,所以它不能用作标识符。您要么需要使用双引号as "dec",要么使用不同的别名。

但是你的代码中有另一个错误:

to_char()返回一个字符值,不能与整数比较,所以需要与'12'

比较
select sum(case when to_char(t.work_date,'mm') = '12' then t.work_day end ) as "dec"
from employee t;

在Postgres中,另一种方法是使用filter()子句进行聚合。我更喜欢这样,因为这样更容易读(至少在我看来)。

select sum(t.work_day) filter (where to_char(t.work_date,'mm') = '12') as "dec"
from employee t;

相关内容

最新更新