ORA-00979: не группа по выражению вопроса [дубликат]
На этот вопрос уже есть ответ здесь:
- ORA-00979 не группа по выражению 7 ответов
Я выполняю следующий запрос и получаю ошибку "ORA-00979: not A GROUP BY expression".
select distinct
field1,
field2,
field3,
count(*) as field4,
field5,
field6,
case
when smt1>0 then 'Deleted'
when smt2>0 then 'Impacted'
when smt3>0 then 'Unknown'
else 'Clean'
end as field7,
field8,
field9,
field10,
field11,
field12,
field13
from (<here a big sub query>) A
group by field1, field2
order by field1, field2
Я знаю, что мне нужно поместить все столбцы SELECT в оператор GROUP BY, кроме функций группировки (таких как MAX или SUM), поэтому Я пытаюсь выполнить следующий запрос, но получаю одно и то же сообщение об ошибке:
select distinct
field1,
field2,
field3,
count(*) as field4,
field5,
field6,
case
when smt1>0 then 'Deleted'
when smt2>0 then 'Impacted'
when smt3>0 then 'Unknown'
else 'Clean'
end as field7,
field8,
field9,
field10,
field11,
field12,
field13
from (<here a big sub query>) A
group by field1, field2, field3, field5, field6, field8, field9, field10, field11, field12, field13
order by field1, field2
Как я могу решить эту проблему, не меняя общий смысл запроса?
Большое вам спасибо., Мартин
2 ответа:
В вашем выражении
group by
отсутствуетfield7
.Также вы не можете использовать псевдоним в вашей группе по выражению того же запроса. Вам нужно добавить полный оператор
CASE
в вашу группу по выражению, чтобы включить field7.Простое упоминание псевдонима невозможно в группе by, потому что Шаг
SELECT
является последним шагом для выполнения запроса, группировка происходит раньше, когда имена псевдонимов еще не определены.