Mar*_*ard 2 sql oracle oracle11g ora-00979
我正在执行以下请求,我得到一个"ORA-00979:不是GROUP BY表达式"错误.
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
Run Code Online (Sandbox Code Playgroud)
我知道我必须将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
Run Code Online (Sandbox Code Playgroud)
如何在不改变查询的整体含义的情况下解决这个问题?
非常感谢,马丁
你field7
的group by
表达中缺少你.
此外,您不能通过表达相同的查询在组中使用别名.您需要CASE
通过表达式在组中添加完整语句以包含field7.
只是在group by中提到别名是不可能的,因为该SELECT
步骤是执行查询的最后一步,分组发生在早期,当别名尚未定义时.