Sql ORA-00937:不是单个组功能
为什么我不能在select语句中使用这些列?是否需要按c.CLIENT_ID、c.FNAME、c.LNAME使用该组函数组。如何解决这个问题Sql ORA-00937:不是单个组功能,sql,oracle,Sql,Oracle,为什么我不能在select语句中使用这些列?是否需要按c.CLIENT_ID、c.FNAME、c.LNAME使用该组函数组。如何解决这个问题 SELECT c.CLIENT_ID, c.FNAME, c.LNAME, COUNT(*) FROM RACE r JOIN VAGON v ON r.RACE_ID = v.RACE_ID
SELECT
c.CLIENT_ID, c.FNAME, c.LNAME, COUNT(*)
FROM
RACE r
JOIN VAGON v
ON r.RACE_ID = v.RACE_ID
JOIN TICKET t
ON v.VAGON_ID = t.VAGON_ID
JOIN CLIENT c
ON c.CLIENT_ID = t.CLIENT_ID
WHERE r.DEPART_PLACE = 'Lviv' AND r.DESTINATION_PLACE = 'Kyiv';
GROUP BY c.CLIENT_ID
HAVING COUNT(*) >= 2
你自己回答的。是的,您需要在组中使用该列,或者在其上使用诸如min或max之类的聚合函数 为什么? 您知道该行由客户端ID设置为唯一,但数据库没有。因此,您必须告诉它,以便让它确定如何构造和执行查询
而且你应该把它去掉;"基辅"之后, 除表达式外,您选择的所有列都应添加到组中。 为什么?
因为group by以一种独特的方式工作。在fname,lname上使用MAX。您是否尝试过自己的想法?使用c.CLIENT_ID,c.fname,c.lname这样的group by,它仍然不起作用定义:不起作用。相同的错误ORA-00937它起作用。主要问题是缺少分号,但奇怪的是,为什么数据库不知道客户机ID是唯一的。因为它是表客户机的主键,看起来没那么远。声明应该是自我解释的。