CREATE TABLE demo
(
id number(10) NOT NULL,
ct number(10) ,
CONSTRAINT id_pk PRIMARY KEY (id)
);
insert into demo(id,ct) values(1,4);
insert into demo(id,ct) values(2,2);
insert into demo(id,ct) values(3,3);
insert into demo(id,ct) values(4,2);
select * from demo
select q2.id,q2.ct from (
select a1.id id,(SELECT sum(ct) from demo a2
where a2.id = a1.id) ct
from demo a1 ) q2
group by q2.id
以上查询在一个数据库中失败
ORA-00979:不是GROUP BY表达式 00979. 00000 - "不是GROUP BY表达式" *原因:
*动作:行错误:1列:14
在另一个数据库中,它返回带有计数的结果
数据库版本:11.2.0.4.0
两个数据库都在相同版本上运行。以下查询的结果在两个DB中都是相同的
SELECT * FROM PRODUCT_COMPONENT_VERSION;
答案 0 :(得分:0)
分组应该只与组功能一起使用(总和,计数,平均等)。 旧数据库引擎用于接受group by作为order by的意思,这不是正确的用法。
“group by”除了“order by”之外没有其他意义
答案 1 :(得分:0)
查询错误。您需要在q2.ct上应用聚合函数(例如sum(q2.ct))或将其包含在group by子句中。