Запрос с GROUP BY с параметрами к Oracle
Извините, если несколько больше чем обычно займу Ваше внимание - SQL-запрос немаленький.
Есть запрос с GROUP BY к Ораклу. С параметрами. Параметры - из диалоговой формы самого отчёта.
Оракл на него ругается:
ORA-00979: not a group by expression
Если в тексте запроса явно указываю параметры - работает.
Если я выполняю запрос с параметрами не из ФастРепорта - работает.
Если я делаю просто селект из фастрепорта с теми же параметрами - работает.
Уже всю голову поломал - и типы параметров менял, и скобки ставил - не помогает и всё тут. А запрос рабочий. И параметры при простом селекте нормально передаются.
Вот собсно запрос:
SELECT
KWHDAY.SAMPLE_DATE AS S_D,
Sum(KWH30.SAMPLE_VALUE) AS SUM30,
KWHDAY.SAMPLE_VALUE AS SUMDAY,
MTRDAY_FROM.SAMPLE_VALUE AS MTR_FROM,
MTRDAY_TO.SAMPLE_VALUE AS MTR_TO,
(MTRDAY_TO.SAMPLE_VALUE - MTRDAY_FROM.SAMPLE_VALUE) AS MTRDIFF,
(MTRDAY_TO.SAMPLE_VALUE - MTRDAY_FROM.SAMPLE_VALUE)*MTRTYPE.C_TRANSFORM AS MTRSUM
FROM
NODES,
KWH30,
KWHDAY,
MTRDAY MTRDAY_FROM,
MTRDAY MTRDAY_TO,
MTRUSERPARAMETERS MTRTYPE
WHERE
((KWHDAY.SAMPLE_DATE >= :D_F) AND (KWHDAY.SAMPLE_DATE <= :D_T)) AND
((NODES.OBJECT_CODE=:O_C) AND (NODES.NODE_CODE=:N_C)) AND
(Trunc(KWH30.SAMPLE_DATE,'DD')=KWHDAY.SAMPLE_DATE) AND
(MTRDAY_FROM.SAMPLE_DATE=KWHDAY.SAMPLE_DATE) AND
(MTRDAY_TO.SAMPLE_DATE=(MTRDAY_FROM.SAMPLE_DATE + 1)) AND
((KWH30.OBJECT_CODE=NODES.OBJECT_CODE) AND (KWH30.NODE_CODE=NODES.NODE_CODE)) AND
((KWHDAY.OBJECT_CODE=NODES.OBJECT_CODE) AND (KWHDAY.NODE_CODE=NODES.NODE_CODE)) AND
((MTRDAY_FROM.OBJECT_CODE=NODES.OBJECT_CODE) AND (MTRDAY_FROM.NODE_CODE=NODES.NODE_CODE)) AND
((MTRDAY_TO.OBJECT_CODE=NODES.OBJECT_CODE) AND (MTRDAY_TO.NODE_CODE=NODES.NODE_CODE)) AND
((MTRDAY_FROM.OBJECT_CODE=MTRTYPE.OBJECT_CODE) AND (MTRDAY_FROM.NODE_CODE=MTRTYPE.NODE_CODE))
GROUP BY
KWHDAY.SAMPLE_DATE,
KWHDAY.SAMPLE_VALUE,
MTRDAY_FROM.SAMPLE_VALUE,
MTRDAY_TO.SAMPLE_VALUE,
MTRDAY_TO.SAMPLE_VALUE - MTRDAY_FROM.SAMPLE_VALUE,
(MTRDAY_TO.SAMPLE_VALUE - MTRDAY_FROM.SAMPLE_VALUE)*MTRTYPE.C_TRANSFORM
ORDER BY
KWHDAY.SAMPLE_DATE
Заранее спасибо за внимание.
Есть запрос с GROUP BY к Ораклу. С параметрами. Параметры - из диалоговой формы самого отчёта.
Оракл на него ругается:
ORA-00979: not a group by expression
Если в тексте запроса явно указываю параметры - работает.
Если я выполняю запрос с параметрами не из ФастРепорта - работает.
Если я делаю просто селект из фастрепорта с теми же параметрами - работает.
Уже всю голову поломал - и типы параметров менял, и скобки ставил - не помогает и всё тут. А запрос рабочий. И параметры при простом селекте нормально передаются.
Вот собсно запрос:
SELECT
KWHDAY.SAMPLE_DATE AS S_D,
Sum(KWH30.SAMPLE_VALUE) AS SUM30,
KWHDAY.SAMPLE_VALUE AS SUMDAY,
MTRDAY_FROM.SAMPLE_VALUE AS MTR_FROM,
MTRDAY_TO.SAMPLE_VALUE AS MTR_TO,
(MTRDAY_TO.SAMPLE_VALUE - MTRDAY_FROM.SAMPLE_VALUE) AS MTRDIFF,
(MTRDAY_TO.SAMPLE_VALUE - MTRDAY_FROM.SAMPLE_VALUE)*MTRTYPE.C_TRANSFORM AS MTRSUM
FROM
NODES,
KWH30,
KWHDAY,
MTRDAY MTRDAY_FROM,
MTRDAY MTRDAY_TO,
MTRUSERPARAMETERS MTRTYPE
WHERE
((KWHDAY.SAMPLE_DATE >= :D_F) AND (KWHDAY.SAMPLE_DATE <= :D_T)) AND
((NODES.OBJECT_CODE=:O_C) AND (NODES.NODE_CODE=:N_C)) AND
(Trunc(KWH30.SAMPLE_DATE,'DD')=KWHDAY.SAMPLE_DATE) AND
(MTRDAY_FROM.SAMPLE_DATE=KWHDAY.SAMPLE_DATE) AND
(MTRDAY_TO.SAMPLE_DATE=(MTRDAY_FROM.SAMPLE_DATE + 1)) AND
((KWH30.OBJECT_CODE=NODES.OBJECT_CODE) AND (KWH30.NODE_CODE=NODES.NODE_CODE)) AND
((KWHDAY.OBJECT_CODE=NODES.OBJECT_CODE) AND (KWHDAY.NODE_CODE=NODES.NODE_CODE)) AND
((MTRDAY_FROM.OBJECT_CODE=NODES.OBJECT_CODE) AND (MTRDAY_FROM.NODE_CODE=NODES.NODE_CODE)) AND
((MTRDAY_TO.OBJECT_CODE=NODES.OBJECT_CODE) AND (MTRDAY_TO.NODE_CODE=NODES.NODE_CODE)) AND
((MTRDAY_FROM.OBJECT_CODE=MTRTYPE.OBJECT_CODE) AND (MTRDAY_FROM.NODE_CODE=MTRTYPE.NODE_CODE))
GROUP BY
KWHDAY.SAMPLE_DATE,
KWHDAY.SAMPLE_VALUE,
MTRDAY_FROM.SAMPLE_VALUE,
MTRDAY_TO.SAMPLE_VALUE,
MTRDAY_TO.SAMPLE_VALUE - MTRDAY_FROM.SAMPLE_VALUE,
(MTRDAY_TO.SAMPLE_VALUE - MTRDAY_FROM.SAMPLE_VALUE)*MTRTYPE.C_TRANSFORM
ORDER BY
KWHDAY.SAMPLE_DATE
Заранее спасибо за внимание.
Комментарии
TADOConnection - в основной форме приложения
компоненты доступа к БД (ADO)- в самом отчёте
Параметры берутся с диалоговой формы тоже в самом отчёте (ну это я писал).
ТОЧНО такой же отчёт, но без группировки и агрегатных функций с той же самой формой работает, к примеру такой:
SELECT
KWHDAY.SAMPLE_DATE AS S_D,
KWHDAY.SAMPLE_VALUE AS SUMDAY
FROM
KWHDAY
WHERE
((KWHDAY.SAMPLE_DATE >= :D_F) AND (KWHDAY.SAMPLE_DATE <= :D_T)) AND
((KWHDAY.OBJECT_CODE=:O_C) AND (KWHDAY.NODE_CODE=:N_C))
ORDER BY
KWHDAY.SAMPLE_DATE
Проверь типы ПАРАМЕТРОВ и ЗНАЧЕНИЯ у адошного квери в отчёте ...
Даже не знаю что и думать...
Вот это работает:
SELECT
KWHDAY.NODE_CODE AS NODE_N,
KWHDAY.SAMPLE_VALUE AS SUMDAY
FROM
KWHDAY
WHERE
(KWHDAY.OBJECT_CODE=:OBJECT_CODE)
вот это - не работает: ошибка "not a group by expression"
SELECT
KWHDAY.NODE_CODE AS NODE_N,
SUM(KWHDAY.SAMPLE_VALUE) AS SUMDAY
FROM
KWHDAY
WHERE
(KWHDAY.OBJECT_CODE=:OBJECT_CODE)
GROUP BY
KWHDAY.NODE_CODE
В одном и том же отчёте с одними и теми же параметрами - то есть при прочих равных условиях.