आप rownum
. का उपयोग नहीं कर सकते इस तरह। rownum
गणना की जाती है जब मान वास्तव में क्वेरी से लौटाए जाते हैं - केवल जब एक पंक्ति वापस आती है। इसलिए, कथन:
where rownum = 2
कभी भी कोई मान नहीं लौटाएगा, क्योंकि "2" से पहले "1" होना आवश्यक है।
यदि आप Oracle 12+ का उपयोग कर रहे हैं, तो आप offset
. का उपयोग कर सकते हैं क्लॉज के साथ fetch first <n> rows only
. पुराने संस्करणों में, आप row_number() over ()
. का उपयोग कर सकते हैं कॉलम के रूप में एक पंक्ति संख्या की गणना करने के लिए और where
. में इसका उपयोग करें ।
असल में, आपकी क्वेरी पहले से ही एक सबक्वेरी का उपयोग करती है, इसलिए आप कुछ ऐसा कर सकते हैं:
select *
from (select . . .,
row_number() over (order by Request_ID, Actual_Start_Date) as rn
. . .
) t
WHERE rn < (1000000 * to_Number(:X) and)
rn >= (1000000 * (to_Number(:X)-1))