多个过滤器(其中......)条件PostgreSQL

时间:2016-04-12 17:50:36

标签: sql postgresql filter where where-clause

我正在尝试使用多个过滤器运行以下查询。我一直在收到错误。如果我单独运行过滤器,查询运行正常。多个过滤器(哪里......)不起作用?

select count(distinct a.user) as total
    ,count(distinct a.user) filter (where d.date >= current_date - '1 day'::interval) as 1_day
    ,count(distinct a.user) filter (where d.date >= current_date - '3 days'::interval) as 3_day
    ,count(distinct a.user) filter (where d.date >= current_date - '1 week'::interval) as 1_week
    ,count(distinct a.user) filter (where d.date >= current_date - '1 month'::interval) as 1_month
    from ppl d
    join
                (select distinct t.user from tbl t
                join date dd
                    on t.date::date between dd.month_start and dd.month_end
                where dd.date = current_date - '14 days'::INTERVAL
                ) as a
    on d.user = a.user 

我收到此错误:

[Err] ERROR:  syntax error at or near "1"
LINE 2: ....lastedit_date >= current_date - '1 day'::interval) as 1_day
                                                                  ^

1 个答案:

答案 0 :(得分:2)

来自docs

  

SQL标识符和关键字必须以字母(a-z开头,但也包含带变音符号和非拉丁字母的字母)或下划线(_

这意味着1_day不是有效的标识符,您不能将其用作没有双引号的列名。