मान लें कि आप उन्हें ऑर्डर कर रहे हैं 1 - 10000
कुछ तर्क का उपयोग करके और केवल पंक्तियों को आउटपुट करना चाहते हैं 1-100,2001-2100,4001-4100,etc
तो आप ROWNUM
. का उपयोग कर सकते हैं स्यूडोकॉलम:
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 MOD( rn - 1, 2000 ) < 100; -- Finally, filter the top 100 per 2000.
या आप ROW_NUMBER()
. का उपयोग कर सकते हैं विश्लेषणात्मक कार्य:
SELECT *
FROM (
SELECT t.*,
ROW_NUMBER() OVER ( ORDER BY your_condition ) AS rn
FROM your_table
)
WHERE MOD( rn - 1, 2000 ) < 100;
WHERE
बदलें इसके साथ खंड:
WHERE rn - POWER(
2,
TRUNC( CAST( LOG( 2, CEIL( rn / 1000 ) ) AS NUMBER(20,4) ) )
) * 1000 + 1000 <= 100