表结构:
SQL> desc m1
Name   Type         Nullable Default Comments 
------ ------------ -------- ------- -------- 
STATUS VARCHAR2(3)  Y                         
QTY    NUMBER(20,5) Y                         
DAT    VARCHAR2(12) Y                         表数据(测试用):
SQL> SELECT * FROM M1;STATUS                    QTY DAT
------ ---------------------- ------------
AAA                   1.00000 20081208
AAA                   1.00000 20081209
AAA                   1.00000 20071209
BBB                   1.00000 20070909
BBB                   1.00000 20080909SQL>现在的需求是查询出STATUS为最小的,DAT为最大的那条记录最终结果:
STATUS                    QTY DAT
------ ---------------------- ------------
AAA         1.00000 20081209
我的实现方法:
SELECT STATUS,QTY,DAT FROM (
       SELECT DISTINCT STATUS,QTY,MAX(DAT)OVER(PARTITION BY STATUS,QTY) DAT FROM M1) 
WHERE STATUS = (
      SELECT MIN(STATUS) FROM (
             SELECT DISTINCT STATUS,QTY,MAX(DAT)OVER(PARTITION BY STATUS,QTY) DAT FROM M1))但是,由于表的数据量很大,我想请问除此之外有没有效能高点的查询方法
谢谢!