私のテーブル構造にデータセットから最新の行を選択する方法:私は、複合IDとしてID1 + ID2 + ID3を検討しています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 - > 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関数のみのオプションがあります。 おかげ
ああ、私は私のプロジェクトのためにそれを実行されています。ありがとう –
'ROW_NUMBER()'は同じ結果を与えません - 単一の行だけを返します。 OPのクエリは、すべて同じ最大値を持つ場合、複数の行を返します。 – MT0