日期:2014-05-17  浏览次数:20764 次

2次求MAX的SQL写法
表结构:
CREATE TABLE DATA_INFO
(
    SEQ_NO                         VARCHAR2(12) NOT NULL,
    ENT_CODE                       CHAR(8),
    ENT_NUMBER                     CHAR(12),
    BRANCH                         CHAR(2),
    PRINT_DATE                     DATE,
    NUM_1                          CHAR(2),
    NUM_2                          CHAR(2),
    NUM_3                          CHAR(2)
)

求相同
ENT_CODE,ENT_NUMBER,BRANCH
中 PRINT_DATE最大记录的
ENT_CODE,ENT_NUMBER,BRANCH,NUM_1,NUM_2,NUM_3

如果结果集中有复数条记录的情况下
用SEQ_NO最大的来表示

想请教 比较简洁的写法是什么。
(有少于2次子查询的写法吗?)
sql

------解决方案--------------------
百度 : 分析函数.
------解决方案--------------------

selec(t ENT_CODE,ENT_NUMBER,BRANCH,NUM_1,NUM_2,NUM_3
from 
select ENT_CODE,ENT_NUMBER,BRANCH,NUM_1,NUM_2,NUM_3,
       row_number() over(partition by ENT_CODE,ENT_NUMBER,BRANCH order by PRINT_DATE desc,SEQ_NO desc) rn
from DATA_INFO
)
where rn = 1