我有表结构,如:
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
我需要找到col4的值,它对col2和col3的组合具有最大值.例如我的结果应该是:
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) 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;
还有比这更好的方法吗?
解决方法
如果您期望得到结果:
col4 Z M
你应该写:
SELECT MAX(col4) AS col4 FROM new_test GROUP BY col2,col3
这将返回每列col2 col3在col4列中找到的最大值
如果你需要:
COL2 COL3 COL4 A B Z C D M
写:
SELECT col2,MAX(col4) AS col4 FROM new_test GROUP BY col2,col3
最后,如果您需要:
COL1 COL2 COL3 COL4 2 A B Z 3 C D M
有很多变化.像这个:
SELECT col1,col2,col4 FROM new_test NATURAL JOIN (SELECT col2,MAX(col4) AS col4 FROM new_test GROUP BY col2,col3)