分組我有一個表SITE_SETTINGS類似如下:SQL:獲取最新的紀錄由多列在Oracle數據庫
SITE_ID SETTINGS_CODE UPDATE_TS OTHER_SETTINGS1 OTHER_SETTINGS2
1 CODE1 21-JAN-17 S1 S2
1 CODE1 23-JAN-17 S3 S4
1 CODE2 14-JAN-17 S1 S4
1 CODE2 18-JAN-17 S1 S3
1 CODE2 21-JAN-17 S1 S2
1 CODE3 04-FEB-17 S8 S9
2 CODE1 21-MAR-17 S1 S2
2 CODE2 21-JAN-17 S2 S5
2 CODE1 21-MAR-17 S1 S5
2 CODE2 10-MAR-17 S1 S5
2 CODE3 10-JAN-17 S1 S5
這些多個站點,每個站點有3種不同類型的SETTINGS_CODE。我需要所有網站的每個settings_code的最新記錄。這樣的事情:
SITE_ID SETTINGS_CODE UPDATE_TS OTHER_SETTINGS1 OTHER_SETTINGS2
1 CODE1 23-JAN-17 S3 S4
1 CODE2 21-JAN-17 S1 S2
1 CODE3 04-FEB-17 S8 S9
2 CODE1 21-MAR-17 S1 S2
2 CODE2 10-MAR-17 S1 S5
2 CODE3 10-JAN-17 S1 S5
我想在自己的表上做一個連接,但它給了我重複的記錄。例如,對於SITE_ID = 1,我得到CODE1的多個相同記錄。這是我曾嘗試過的:
select t.SITE_ID, t.SETTINGS_CODE, t.OTHER_SETTINGS1, t.OTHER_SETTINGS2, t.UPDATE_TS
from SITE_SETTINGS t
inner join (
select SITE_ID, SETTINGS_CODE, max(UPDATE_TS) as MaxDate
from SITE_SETTINGS
group by SITE_ID, SETTINGS_CODE
order by SITE_ID, SETTINGS_CODE
) tm on t.SITE_ID = tm.SITE_ID and t.SETTINGS_CODE=tm.SETTINGS_CODE and t.UPDATE_TS = tm.MaxDate
我認爲我遇到的問題是無法按多列進行分組。有沒有辦法在沒有重複的情況下獲取數據?