Postgres COUNT FILTER语法错误 - 为什么?

时间:2016-09-14 15:19:56

标签: postgresql count postgresql-9.1

有人能找到我这个查询产生语法错误的原因吗?这是一个简单的广告数据库,其中包含类别和广告。该查询获取了广告类别列表,并计算了广告的数量和活动广告的数量,后者表示不超过2周的广告。 PostgreSQL说:

语法错误在或附近"(" LINE 5:FILTER(WHERE ads .... ^

其他COUNT工作正常。我不知道FILTER子句的问题是什么。谢谢!

    $data = pg_query($dbconn, 'SELECT categories.id,
                                  categories.name,
                                  COUNT(ads.id) AS ads_count,
                                  COUNT(ads.id) 
                                      FILTER (WHERE ads.date > '.strtotime('-2 weeks').') 
                                      AS ads_active_count
                           FROM erpatak.ads_categories AS categories
                           LEFT JOIN erpatak.ads AS ads ON ads.category = categories.id'
                           .$filter.'
                           GROUP BY categories.id, categories.name
                           ORDER BY name 
                           OFFSET '.$offset.' 
                           LIMIT '.$maxcount);

1 个答案:

答案 0 :(得分:1)

好的,我找到了解决方案。正如Kamil G.向我透露的那样,COUNT无法在9.1版本中进行过滤。解决方案是:

", "