我有以下sql查询:

SELECT
     to_char(p.log_date, 'Mon') as mon,
     extract(year from p.log_date) as year,
from
     T
group by
     mon
having
     mon = 'september'
and
     year = '2018';

表格格式如下:
date        col1     col2
2018/09/10   --       --
2018/09/11   --       --
2018/09/12   --       --

没有monyear列。
我得到的错误ERROR: column "mon" does not exist.如何解决这个问题?

最佳答案

使用where子句无需

SELECT
     to_char(p.log_date, 'Mon') as mon,
     extract(year from p.log_date) as year from your_table
where  to_char(p.log_date, 'Mon') = 'september'
and
     extract(year from p.log_date) = '2018'

因为没有聚合函数,所以不要认为这里需要
mon是您的列alis名称,它在filter中找不到db engine,因此抛出了错误。
注意:并非所有dbms都支持过滤器中的别名(where或having)

关于sql - 在“group by”子句之后“具有”时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52964783/

10-13 00:48