2014-03-30 17 views
0

爲什麼我不能在select語句中使用這些列?是否有必要使用這種組功能GROUP BY c.CLIENT_ID,c.FNAME, c.LNAME。如何解決這個問題?ORA-00937:不是單組功能

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 
+0

在fname,lname上使用MAX。 – Mihai

+0

你有沒有試過你的想法? –

+0

與這樣的GROUP BY c.CLIENT_ID,c.FNAME,c.LNAME,它仍然不起作用 – user3474380

回答

0

你自己給出了答案。是的,你需要在你的group by或對其聚合函數(如minmax

爲什麼?列

你知道該行是由Client_ID做出獨一無二的,但數據庫無法所以你必須把它告訴給它,以讓它確定查詢是如何構建的,應當執行。

而且你應該刪除;'Kyiv';

+0

它的工作原理。主要問題是錯過了分號 – user3474380

+0

但是,爲什麼數據庫不知道CLIENT_ID是唯一的,這很奇怪。因爲它是表CLIENT的主鍵。 – user3474380

+0

它看起來並不遙遠。聲明應該是自我解釋的。 –

0

您選擇的所有列應該通過除表達式之外的組添加。 爲什麼? 因爲小組以獨特的方式工作。