У меня есть запрос, который использует GROUP BY
, поэтому мне нужно поместить выбранные элементы либо в GROUP BY
, либо в функцию агрегата. Когда я помещаю их в GROUP BY
, t2.category
выдает ошибку в заголовке. Я попытался включить агрегатную функцию в операторы CASE/WHEN
вместо того, чтобы положить t2.category
в GROUP BY
, но я получаю ошибку invalid identifier
. Примером t2.category
может быть «Server Reliability - проблемы с подключением из-за отказа от db». Как я могу избавиться от этой ошибки?ORA-00923: ожидается - получил CLOB
SELECT
msr._id,
CASE ans.question_id WHEN '767' THEN ans.category END "767",
CASE ans.question_id WHEN '768' THEN ans.category END "768"
FROM table1 t1
LEFT OUTER JOIN table2 t2
ON t1._id = t2._id
WHERE t2.question_id in (767,768) AND t2.assigned_to not in ('Smith, John')
AND t1.request_type_id in (288,289) and t1.status_id not in (0, 11);
GROUP BY t1._id, t2.question_id, t2.category
Я предполагаю, что 't2.category' является' clob' на основе ошибки. Это правильно? –
Да. Это то, что вызывает ошибку. – NoSocks
[Вы не можете группировать по CLOB] (http://docs.oracle.com/cd/E11882_01/appdev.112/e18294/adlob_sql_semantics.htm#ADLOB45594). Вы можете группировать до 4000 символов, но если это было нормально, вам не понадобится CLOB. Почему у вас есть предложение group by, когда у вас нет агрегатов в списке выбора? Это только часть запроса? Если у вас действительно есть агрегаты, покажите репрезентативный запрос и структуры таблицы, и, возможно, есть способ - как присоединение к 't2' после того, как произойдет агрегация. Тем не менее, зависит от ваших данных. –