ORA-00937:不是单组组功能

时间:2014-03-30 11:18:59

标签: sql oracle

为什么我不能在select语句中使用这些列?是否有必要使用此类组函数GROUP BY 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
                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

2 个答案:

答案 0 :(得分:0)

你自己给出了答案。是的,您需要group by中的列或使用聚合函数(例如minmax

<强>为什么吗

您知道Client_ID行使该行唯一,但数据库并不是。所以你必须告诉它,以便让它确定如何构造和应该执行查询。

您应该在;

之后移除'Kyiv';

答案 1 :(得分:0)

除了表达式之外,您选择的所有列都应添加到组中。 为什么? 因为这个小组以独特的方式工作。