Oracle:非按表达式分组错误
运行此查询时,我得到一个group by表达式Oracle:非按表达式分组错误,oracle,Oracle,运行此查询时,我得到一个group by表达式错误ORA-00979。我已经尝试通过从组中删除x.a,但仍然不起作用。有人能帮我吗。您需要在GROUP BY子句中使用此表达式,而不是x.a: select case when x.a in (select y.c from join2) then x.a end, x.b, x.c, y.a, z.c from join1 x, join2 y, join3 z where x.a = z.a group by x.a, x.b, x.c,
错误ORA-00979
。我已经尝试通过从组中删除x.a,但仍然不起作用。有人能帮我吗。您需要在GROUP BY
子句中使用此表达式,而不是x.a
:
select case when x.a in (select y.c from join2) then x.a end, x.b, x.c, y.a, z.c
from join1 x, join2 y, join3 z where x.a = z.a
group by x.a, x.b, x.c, y.a, z.c order by x.c;
因此,把所有这些放在一起:
case when x.a in (select y.c from join2) then x.a end
但是,我必须指出,您正在进行
x
和y
之间的笛卡尔连接,而且还不完全清楚为什么要使用groupby
,因为没有聚合。thanx david,但我还需要一个帮助。我喜欢使用与上述查询相同的方法,从join1 x、join2 y、join3 z中选择x.a、x.b、x.c、y.a、z.c,其中x.a=y.c和x.a=z.a按x.a、x.b、x.c、y.a、z.c排序;你能帮我一下吗?我看不出有什么问题;如果你需要帮助,我建议你问一个新问题。
SELECT CASE WHEN x.a IN ( SELECT y.c FROM join2) THEN x.a END
, x.b, x.c, y.a, z.c
FROM join1 x, join2 y, join3 z
WHERE x.a = z.a
GROUP BY CASE WHEN x.a IN ( SELECT y.c FROM join2) THEN x.a END
, x.b, x.c, y.a, z.c
ORDER BY x.c;