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;