次のようなテーブル構造があります。
CREATE TABLE new_test
( col1 NUMBER(2) NOT NULL,
col2 VARCHAR2(50) NOT NULL,
col3 VARCHAR2(50) NOT NULL,
col4 VARCHAR2(50) NOT NULL
);
次のデータがあります。
col1 col2 col3 col4
0 A B X
1 A B Y
2 A B Z
1 C D L
3 C D M
col2 と col3 の組み合わせの最大値を持つ col4 の値を見つける必要があります。たとえば、私の結果は次のようになります。
col4
Z
M
私はOracle分析関数を使用しようとしました:
SELECT col4, MAX(col1) OVER (PARTITION BY col2, col3) FROM (
SELECT col2, col3, col4, col1
FROM new_test);
しかし、期待どおりに機能していません。この問題を解決するのを手伝ってもらえますか?
更新:次を使用して動作させることができます:
SELECT a.col4
FROM new_test a,
(SELECT col2,
col3,
col4,
MAX(col1) OVER (PARTITION BY col2, col3) AS col1
FROM new_test
) b
WHERE a.col2 = b.col2
AND a.col3 = b.col3
AND a.col4 = b.col4
AND a.col1 = b.col1;
これより良い方法はありますか?