我正在使用sql从表中为特定范围的记录选择数据。我正在使用rownum实现大于或小于逻辑来实现所需的数据集。通过使用以下sql,我可以从表中获取21到40的记录。此条件表总共包含100行。通过此sql,我想获取一个指示符(值),该指示符指示存在更多针对此条件的记录。
我在Google中找不到任何解决方案。SQL-
select * from ( select rownum rnum, a.* from(SELECT TO_CHAR(D.DATE,'YYYYMMDD'),D.TYPE,
TO_CHAR(D.VDATE,'YYYYMMDD'),D.AMT,D.PARTICULAR,D.NUM,D.ID,
D.CODE,D.INFO FROM MySCHEMA
.MYTABLE D WHERE D.DATE >= TO_CHAR(TO_DATE('20160701','YYYYMMDD'),'DD-MON-RRRR')
AND D.DATE <= TO_CHAR(TO_DATE('20161105','YYYYMMDD'),'DD-MON-RRRR') AND D.XDATE >= TO_CHAR(TO_DATE('20160701','YYYYMMDD'),'DD-MON-RRRR')
AND D.XDATE <= TO_CHAR(TO_DATE('20161105','YYYYMMDD'),'DD-MON-RRRR')
AND D.FLG='Y' AND D.TYPE IN('D','C')
AND
D.ACI = 'CO6'
ORDER BY D.DATE DESC
)
a where rownum <= 40 ) where rnum >= 21;
您可以count(*) over () total_rows
在您的内部添加select
。这将告诉您内部查询在没有rownum
谓词的情况下将返回多少行。但这意味着,每次您要请求一页结果时,Oracle必须完全执行内部查询,然后丢弃所有您未提取的行。这将比您目前的工作更昂贵
select *
from ( select rownum rnum, a.*
from(SELECT count(1) over () total_rows,
<<the rest of your query>>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句