фильтр (где ...), который работает с Postgres, но не с Redshift - PullRequest
0 голосов
/ 22 апреля 2020

Какая альтернатива для Redshift фильтру (где ...) возможна в Postgres? Я получаю следующую ошибку и не могу выяснить, невозможно ли это в Redshift или у меня есть синтаксическая ошибка: База данных сообщила о синтаксической ошибке: Amazon Недопустимая операция: синтаксическая ошибка в или около "(" Позиция: 1521;

select count(distinct "agent.id")  as "agent_cnt"
, count(distinct "agent.id") filter (where "agent.status" = 'active' and ("agent.date" between '2020-01-01' and current_date)) as "active_agent_cnt"
from "agent" 

1 Ответ

1 голос
/ 22 апреля 2020

Используйте выражение case:

count(distinct case when "agent.status" = 'active' and ("agent.date" between '2020-01-01' and current_date then "agent.id" end) as "active_agent_cnt"

Наличие периодов в именах столбцов выглядит крайне подозрительно. Я бы настоятельно не рекомендовал такое соглашение об именах.

...