2014-12-27 38 views
3

我想獲得不同"SkillCategory"和排序idORA-01791-鮮明和

這裏順序是下面的腳本:

SELECT distinct EC.SKILL_CATEGORY from ETOPS_CHECK_FORM E 
INNER JOIN EC_FORM_SKILL EC 
ON EC.EC_FORM_ID=E.ID group by EC.SKILL_CATEGORY ORDER BY EC.ID 

什麼,我做錯了什麼?

回答

3

的問題是,你需要決定其中 id排序。取出distinct,然後用在order by聚合函數:

SELECT EC.SKILL_CATEGORY 
FROM ETOPS_CHECK_FORM E INNER JOIN 
    EC_FORM_SKILL EC 
    ON EC.EC_FORM_ID = E.ID 
GROUP BY EC.SKILL_CATEGORY 
ORDER BY MIN(EC.ID); 
+0

對不起,對我而言,這是作品的魅力:) – 2014-12-27 14:04:56

0

如果你只是想不使用聚合函數不重複的記錄,然後使用DISTINCT關鍵字來代替GROUP BY

試試這個:

SELECT DISTINCT EC.SKILL_CATEGORY 
FROM ETOPS_CHECK_FORM E 
INNER JOIN EC_FORM_SKILL EC ON EC.EC_FORM_ID = E.ID 
ORDER BY EC.ID; 
+0

它不能工作。甲骨文不知道如何使用key2對它進行排序,當它已經使用key1進行分類時。 – 2014-12-27 14:03:57

0
SELECT distinct EC.SKILL_CATEGORY 
FROM ETOPS_CHECK_FORM E 
    INNER JOIN EC_FORM_SKILL EC 
      ON EC.EC_FORM_ID=E.ID 
GROUP BY EC.SKILL_CATEGORY ASC 
ORDER BY MAX(EC.ID) 
0

我不知道你真正想做的...... ^^ 但是,如果你運行該腳本波紋管,你能告訴我們,如果結果是你所希望的:

Select ec.skill_category as sc 
from EC_FORM_SKILL ec 
group by sc; 

待會兒見。

+0

腳本不排序它是我的權利。它應按照編號 – 2014-12-27 14:12:30

+0

排序,按ec.id排序。但是你需要在select中返回這個;) – YannXplorer 2014-12-27 17:01:34