Postgres COUNT FILTER语法错误 - 为什么?
问题描述:
有人可以找到我为什么这个查询产生语法错误吗?这是一个简单的广告数据库,它包含类别和广告。该查询获取广告类别列表,并计算广告的数量和广告的数量,后者表示广告不超过2周。 PostgreSQL的说:Postgres COUNT FILTER语法错误 - 为什么?
达到或接近“(” 5行语法错误:筛选器(广告...^
其他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);
答
OK,我找到了解决办法由于卡米尔G.向我透露,COUNT不能在9.1版本,我这里有过滤解决方案是:
COUNT(CASE WHEN ads.date > '.strtotime('-2 weeks').' THEN 1 END) AS ads_active_count
您是否看到在您的错误消息中没有'ads.date',而是有'ads' –
您是否认为问题是它不知道ads.date应该是什么? –
请附上正在发送到'pg_query'(不含变量)的完整查询字符串。另外,你的Postgres服务器版本是什么? –