не может найти проблему, вызывающую ошибку
Хотя я предполагаю, что @EzLo и @a_horse_with_no_name, возможно, уже нашли ошибку в этом случае, я могу предложить общую процедуру при отладке таких запросов.
Шаг 1. Отладка предикатов JOIN- и WHERE-
Комментируйте все в своем операторе SELECT, оставляйте только JOIN, заменяйте поля *
или константным выражением.
* 1014 Е.Г. *
SELECT 1
-- DISTINCT DM.DESCRIPTION AS "AGENCY",
-- DM.DEPT_NO AS "DEPT NO",
-- CASE
-- ....
-- VMP.RENTAL_CLASS_DESCRIPTION AS "RENT_CLS",
-- VMP.MP_TICKET_NO AS "MP_TKT_NO"
FROM DEPT_MAIN DM
INNER JOIN VIEW_MPOOL VMP ON VMP.DEPT_ID = DM.DEPT_ID
WHERE CASE
WHEN VMP.EST_PICKUP_DT IS NULL THEN
NULL
ELSE
TRUNC(VMP.EST_PICKUP_DT) = TRUNC(SYSDATE)
END
-- GROUP BY DM.DESCRIPTION,
-- ....
-- ORDER BY ..
В случае нескольких сложных предикатов - раскомментируйте один предикат за раз.
Шаг 2. Отладка ваших GROUP BY и HAVING
Раскомментируйте раздел GROUP BY и отредактируйте раздел полей вашего запроса.
Если у вас сложный групповой режим - раскомментируйте по одному полю за раз.
Начните с самого простого до сложного
SELECT
DM.DESCRIPTION
,DM.DEPT_NO
-- ...
FROM DEPT_MAIN DM
INNER JOIN VIEW_MPOOL VMP ON VMP.DEPT_ID = DM.DEPT_ID
WHERE CASE
WHEN VMP.EST_PICKUP_DT IS NULL THEN
NULL
ELSE
TRUNC(VMP.EST_PICKUP_DT) = TRUNC(SYSDATE)
END
GROUP BY DM.DESCRIPTION
,DM.DEPT_NO
Скопируйте и вставьте свои GROUP BYs в раздел SELECT.
Шаг 3. Отладка агрегатов, преобразование полей и переименования
Теперь у вас есть правильный SELECT-запрос, но, вероятно, не в нужной форме.
Шаг 4: Отладка ORSER BYS
У вас правильная форма, и на последнем этапе вам нужно ЗАКАЗАТЬ ПО ВАШИМ ДАННЫМ.
Если у вас есть приличный редактор / IDE, вы можете найти источник ошибки за 5-10 минут даже в случае сложных запросов (и даже с ошибками движка СУБД)
приписка
Лучше заметить, какую версию СУБД вы используете.