帮助理解一下这个代码意思

select * from (select ROWNUM RN, A.* from (

SELECT PATIENTNAME,PATIENTNO,RESULTDATE from his5.LIS_TEST_REG
where RESULTDATE > trunc(sysdate) and PATIENTTYPE = '门诊'
and substr(STATE,4,1) = '0' and substr(STATE,3,1) = '5' and RESULTDATE is not null

and GROUPCODE = 03
and GROUPCODE = 02
and GROUPCODE = 01

GROUP BY PATIENTNAME,PATIENTNO,RESULTDATE
order by RESULTDATE desc) A) where RN <= 36 //每一类最多显示36个名字

这个呢,建议从里边开始看

SELECT PATIENTNAME,PATIENTNO,RESULTDATE from his5.LIS_TEST_REG
where RESULTDATE > trunc(sysdate) and PATIENTTYPE = '门诊'
and substr(STATE,4,1) = '0' and substr(STATE,3,1) = '5' and RESULTDATE is not null
and GROUPCODE = 03
and GROUPCODE = 02
and GROUPCODE = 01
GROUP BY PATIENTNAME,PATIENTNO,RESULTDATE
order by RESULTDATE desc

把这个结果看成一个表 A

select ROWNUM RN, A.* from A

把这个结果也看作一个表假设B(实际没有)

select * from B where RN <= 36

最后就是结果了,可以理解吗?

select * from (select ROWNUM RN, A.* from (

SELECT PATIENTNAME,PATIENTNO,RESULTDATE from his5.LIS_TEST_REG
where RESULTDATE > trunc(sysdate) and PATIENTTYPE = '门诊'
and substr(STATE,4,1) = '0' and substr(STATE,3,1) = '5' and RESULTDATE is not null

and GROUPCODE = 03
and GROUPCODE = 02
and GROUPCODE = 01

GROUP BY PATIENTNAME,PATIENTNO,RESULTDATE
order by RESULTDATE desc) A) where RN <= 36 //每一类最多显示36个名字