2017-04-24 57 views
-2

我有這個疑問:不是一個GROUP BY表達式甲骨文

SELECT * 

FROM FTR 

WHERE ROWNUM = 1 

GROUP BY CUSTOMER_ID 

它給在標題中錯誤。我怎樣才能解決這個問題?謝謝。

編輯:

更準確地說我想這個LINQ查詢轉換爲SQL:

var ftr_dist = db.FTR.GroupBy(x => x.CUSTOMER_ID) 
        .Select(y => y.FirstOrDefault()) 
        .ToList(); 

編輯2: 在我的桌上有一個以上的行與同CUSTOMER_ID,我試圖拿走其中的一個(哪一個並不重要)。作爲我的查詢的結果,應該有獨特的行CUSTOMER_ID

+4

'SELECT *'與'GROUP BY'只是破碎的代碼。嘗試提供樣本數據,期望的結果以及您想要查詢的內容的解釋。 –

+0

另外,閱讀「GROUP BY」應該做什麼 – Lamak

+0

@GordonLinoff我編輯了我的問題。 – jason

回答

1

在我的表中有不止一行,相同的CUSTOMER_ID,我試圖採取其中之一(哪一個並不重要)。作爲我的查詢的結果,應該有獨特的行CUSTOMER_ID

事情是這樣的:

SELECT * 
FROM (
    SELECT f.*, 
     ROW_NUMBER() OVER (PARTITION BY Customer_ID ORDER BY DBMS_RANDOM.VALUE) AS rn 
    FROM FTR f 
) 
WHERE rn = 1 

這將得到一個隨機行每個CUSTOMER_ID

+0

'ORDER BY DBMS_RANDOM.VALUE'是必需的嗎?它會使查詢變慢嗎?如果我刪除它,該怎麼辦?謝謝。 – jason

+0

只需使用'ORDER BY ROWNUM'或其他命令。 'DBMS_RANDOM.VALUE'剛剛放在那裏,因爲你說過「返回哪一行」並不重要。 – MT0