3

ページング用のレコードのサブセットを提供するこのOracle SQLがあります。レコードの合計も必要ですが、2 つのクエリを組み合わせることはできますか? 実際のクエリははるかに複雑です (where との結合など)。質問から気をそらさないように単純化しました。

select count(*) from table;
select outerfields.* from 
 (select row_number() over (order by id asc) r, innerfields.* from 
   ( (select * from table) innerfields)) outerfields where r between 1 and 10;

明らかに、次のようなものは機能しません

select max(r), outerfields.* from 
  (select row_number() over (order by id asc) r, innerfields.* 
    from ( (select * from m30brief) innerfields)) outerfields where r between 1 and 10;
4

1 に答える 1

1

派生テーブルcount(*) over()に追加できます:outerfields

select outerfields.* 
  from 
  (
    select row_number() over (order by id asc) r, 
           count(*) over () totalRows,
           innerfields.* 
      from 
      (
        select * 
          from table
      ) innerfields
  ) outerfields
 where r between 1 and 10;
于 2012-09-19T09:59:52.357 に答える