2013-12-18 87 views
-1

我正在使用下面的查詢來挑選用戶最高資格但我重複的值。因爲用戶有多個資格。最大功能重複值

SELECT  hrQualifications.Qualification,hrUserQualifications.HRUserID,MAX(hrQualifications.QualificationLevel) as Qlevel 
FROM   hrQualifications RIGHT OUTER JOIN 
        hrUserQualifications ON hrQualifications.QualificationID = hrUserQualifications.QualificationID RIGHT OUTER JOIN 
        hrUserApplyforPositions ON hrUserQualifications.HRUserID = hrUserApplyforPositions.HRUserID 
WHERE  (hrUserApplyforPositions.HrPositionID = 1) 
group by hrQualifications.Qualification,hrUserQualifications.HRUserID 

輸出,我得到

Qualification UserID  QualificationLevel 
B.Sc.(Hons)  12  16 
    F.Sc   12  12 
B.Sc.(Hons)  18  16 

需要輸出。我想要最高的用戶資格。

Qualification UserID  QualificationLevel 
B.Sc.(Hons)  12   16 
B.Sc.(Hons)  18   16 
+0

需要更多信息,可能... –

回答

1

做你想做的事的一個好方法是用row_number()。這爲行添加了一個連續的數字,在一個分區內重新開始並由另一個字段排序。

您所查詢:

with t as (
     SELECT q.Qualification, uq.HRUserID, q.QualificationLevel as Qlevel, 
      row_number() over (partition by uq.HRUserID 
           order by q.QualificationLevel desc 
           ) seqnum 
     FROM hrQualifications q RIGHT OUTER JOIN 
      hrUserQualifications uq 
      ON q.QualificationID = uq.QualificationID RIGHT OUTER JOIN 
      hrUserApplyforPositions uap 
      ON uq.HRUserID = uap.HRUserID 
     WHERE uap.HrPositionID = 1 
    ) 
select * 
from t 
where seqnum = 1; 

請注意,我還添加了表的別名使查詢更具可讀性。