Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql t是这样的:获取行:1-1002000-21004000-41008000-810016000-16100、32000-32100等等。@Raj针对您的范围进行了更新-它们不会呈指数增长,因为第一个和第二个范围都是2000行,所以您需要为第一组做一个特例。_Sql_Oracle - Fatal编程技术网

Sql t是这样的:获取行:1-1002000-21004000-41008000-810016000-16100、32000-32100等等。@Raj针对您的范围进行了更新-它们不会呈指数增长,因为第一个和第二个范围都是2000行,所以您需要为第一组做一个特例。

Sql t是这样的:获取行:1-1002000-21004000-41008000-810016000-16100、32000-32100等等。@Raj针对您的范围进行了更新-它们不会呈指数增长,因为第一个和第二个范围都是2000行,所以您需要为第一组做一个特例。,sql,oracle,Sql,Oracle,t是这样的:获取行:1-1002000-21004000-41008000-810016000-16100、32000-32100等等。@Raj针对您的范围进行了更新-它们不会呈指数增长,因为第一个和第二个范围都是2000行,所以您需要为第一组做一个特例。谢谢。你的回答多少解决了我的问题。我正试图修改查询以符合我的确切要求,如下所示:获取行:1-1002000-21004000-41008000-810016000-16100、32000-32100等等。@Raj针对您的范围进行了更新-它们不会


t是这样的:获取行:1-1002000-21004000-41008000-810016000-16100、32000-32100等等。@Raj针对您的范围进行了更新-它们不会呈指数增长,因为第一个和第二个范围都是2000行,所以您需要为第一组做一个特例。谢谢。你的回答多少解决了我的问题。我正试图修改查询以符合我的确切要求,如下所示:获取行:1-1002000-21004000-41008000-810016000-16100、32000-32100等等。@Raj针对您的范围进行了更新-它们不会呈指数增长,因为第一个和第二个范围都是2000行,所以您需要为第一组设置一个特例。
SELECT * FROM (SELECT t.*,ROWNUM AS rn FROM(SELECT * FROM   your_table ORDER BY your_condition) t)WHERE MOD( rn - 1, 2000 ) < 100;
select t.*
from (select t.*,
             row_number() over (floor(log(2, floor(1 + (seqnum - 1) / 1000) ))
                                order by col
                               ) as seqnum_2
      from (select t.*, row_number() over (order by col) as seqnum
            from t
           ) t
where seqnum_2 <= 100;
with rng as (select 0 num from dual union all
             select 1000 * power(2, level) from dual connect by level < 10 )
select * 
  from (select row_number() over (order by object_name) rn, object_name from all_objects)
  join rng on rn between num + 1 and num + 100 
SELECT *
FROM   (
  SELECT t.*,
         ROWNUM AS rn            -- Secondly, assign a row number to the ordered rows
  FROM   (
    SELECT *
    FROM   your_table
    ORDER BY your_condition      -- First, order the data
  ) t
)
WHERE rn - POWER(                -- Finally, filter the top 100.
             2,
             TRUNC( CAST( LOG( 2, CEIL( rn / 1000 ) ) AS NUMBER(20,4) ) )
           ) * 1000 + 1000 <= 100
WHERE CASE                -- Finally, filter the top 100.
        WHEN rn <= 2000 THEN rn
        ELSE rn - POWER(
                    2,
                    TRUNC( CAST( LOG( 2, CEIL( rn / 1000 - 1 ) ) AS NUMBER(20,4) ) )
                  ) * 1000
      END <= 100