2011-05-12 156 views
2

我需要將另一個表連接到我的查詢,並獲取最大值該連接表中的特定列。問題是,有時用戶會有最大值的倍數(例如:如果最大值是5.1,那麼另一行也包含該最大值,因此它會給出多個結果)。我需要知道如何讓它獲得最大值,並且當有最大值的倍數(並且只有當有最大值的倍數時,才能得到沒有多個最大值的用戶的結果),從另一列中獲取最大值,而不會忘記查詢最初得到的最大值。從一個連接表中選擇列的最大值,但是如果有多個最大值,從另一列中選擇具有最大值的那個

我已經包含了我當前的查詢,它返回多個最大值。我加入並參考的表是APPLICATION_VERSION。我需要從VERSION_NUMBER列中獲取基於USER_ACCOUNT_ID(我從EMPLOYEE表中獲得的)的最大值。如果有多個VERSION_NUMBER的最大值,我希望它根據max VERSION_CHANGE_DATE選擇最大值VERSION_NUMBER。有時,雖然VERSION_CHANGE_DATE也有多個最大值,所以我會希望它選擇最大的VERSION_CHANGE_DATE和APPLICATION_VERSION_ID。

順便說一句,對不起,如果我做得比它需要更復雜。只是想徹底。我真的很感激任何幫助:)

SELECT e.user_account_id,e.employee_id,e.external_id_1,e.external_id_2,e.last_name as LAST,e.first_name as FIRST,e.job_profile_type as rank,e.status_change_date,t.name as TEAM,a.alignment_name as TERRITORY,m.machine_node_id as NODE_ID,a.alignment_id,t.division,av.version_change_date,av.version_number as EI_Version,av.login_date as LAST_LOGIN,m.platform_version 
FROM employee e, alignment a, machine_node m, team t, application_version av, 
(SELECT av.user_account_id,MAX(av.version_change_date) as maxdate,max(av.application_version_id) as maxversionid 
FROM application_version av 
GROUP BY av.user_account_id) av2 
where e.employee_id = a.employee_id 
and av.version_change_date = av2.maxdate 
and e.employee_id = m.employee_id 
and t.team_id = a.team_id 
and e.status = 'ACTV' 
and m.status = 'ACTV' 
and e.user_account_id=av.user_account_id 
and m.machine_type = 'REMO' 
and e.external_id_1= 'XM68823' 
order by e.last_name asc 

回答

1

如果我正確地理解你,這應該做到這一點。我不清楚爲什麼version_number在您的示例查詢中沒有出現,但可能這是一個錯誤。

更改內嵌視圖:

(SELECT av.user_account_id, 
     MAX(av.version_number) KEEP (DENSE_RANK LAST ORDER BY version_number,version_change_date, application_version_id) as maxversion, 
     MAX(av.version_change_date) KEEP (DENSE_RANK LAST ORDER BY version_number,version_change_date, application_version_id) as maxdate, 
     max(av.application_version_id) KEEP (DENSE_RANK LAST ORDER BY version_number,version_change_date, application_version_id) as maxversionid 
FROM application_version av 
GROUP BY av.user_account_id) av2 
+0

非常感謝!那樣做了!對此,我真的非常感激。 – 2011-05-12 23:38:59

相關問題