我的表結構選擇一個數據集的最新行:如何ODI
ID1 ID2 ID3 Value Last_Update_date
10 11 12 0.1 21-SEP-17 01.46.12.623580000 PM
10 11 12 0.2 20-SEP-17 01.46.12.623580000 PM
10 11 12 0.3 19-SEP-17 01.46.12.623580000 PM
20 21 22 0.4 01-SEP-17 01.46.12.623580000 PM
20 21 22 0.5 12-SEP-17 01.46.12.623580000 PM
20 21 22 0.4 21-SEP-17 01.46.12.623580000 PM
我正在考慮ID1 + ID2 + ID3爲複合ID,我需要提取最新的行中每個組合鍵。 假設對於這個組合,ID1,ID2,ID3 - > 10,11,12,我的選擇查詢應返回10,11,12 0.2(因爲20 sep是最新的)。
我曾嘗試下面的代碼:
SELECT a.ID1 ,
a.ID2,
a.ID3 ,
a.value ,
a.Last_update_date
FROM a,
(SELECT ID1,
ID2,
ID3,
MAX(last_update_date) last_update_date
FROM a
GROUP BY ID1,
ID2,
ID3
) b
WHERE a.ID1 = b.ID1
AND a.ID2 = b.ID2
AND a.ID3 = a.ID3
AND a.last_update_date = b.last_update_date
有沒有寫這個什麼更好的辦法。 我將在ODI中使用代碼,所以我只能選擇簡單的sql函數,如group by等。 感謝
哦,我已經運行它爲我的項目。謝謝 –
'ROW_NUMBER()'不會給出相同的結果 - 它只會返回一行。 OP的查詢將返回多行,如果它們都具有相同的最大值。 – MT0