Страницы

Поиск по вопросам

воскресенье, 14 апреля 2019 г.

GROUP BY ORACLE SQL. ORA-00979

Уважаемые коллеги, прошу подсказать ЧЯДНТ? Почему
ORA-00979: выражение не является выражением GROUP BY?
Запрос:
select cp.name as bank_name, case when p.register_date between to_date('01.01.2014 00.00.00', 'dd.mm.yyyy hh24:mi:ss') and to_date('31.12.2014 23.59.59', 'dd.mm.yyyy hh24:mi:ss') then count(p.guid) end as "2014", case when p.register_date between to_date('01.01.2015 00.00.00', 'dd.mm.yyyy hh24:mi:ss') and to_date('20.03.2014 23.59.59', 'dd.mm.yyyy hh24:mi:ss') then count(p.guid) end as "2015" from cp_providers cp left join payments p on cp.guid = p.cpp_guid where p.payment_date = '01.01.70' and p.is_active = 1 group by cp.name;
Большое спасибо!


Ответ

Видимо, ошибка в использовании case и функции группировки count. Как вариант, можно сделать так:
select cp.name as bank_name, COUNT(case when p.register_date between to_date('01.01.2014 00.00.00', 'dd.mm.yyyy hh24:mi:ss') and to_date('31.12.2014 23.59.59', 'dd.mm.yyyy hh24:mi:ss') then p.guid else NULL end) as "2014", COUNT(case when p.register_date between to_date('01.01.2015 00.00.00', 'dd.mm.yyyy hh24:mi:ss') and to_date('20.03.2014 23.59.59', 'dd.mm.yyyy hh24:mi:ss') then p.guid else NULL end) as "2015" from cp_providers cp left join payments p on cp.guid = p.cpp_guid where p.payment_date = '01.01.70' and p.is_active = 1 group by cp.name;

Комментариев нет:

Отправить комментарий