2011-10-20 38 views
8

मैं निम्न क्वेरी लिखा है का चयन करें:पहला परिणाम केवल

SELECT CLIENT.CLIENTNO, CLIENT.CNAME, TOTALS.TOTAL 
FROM CLIENT, (SELECT CLIENTNO, SUM(AMOUNT) AS TOTAL 
       FROM PURCHASE GROUP BY CLIENTNO) TOTALS 
WHERE CLIENT.CLIENTNO = TOTALS.CLIENTNO AND ROWNUM <= 1 
ORDER BY TOTALS.TOTAL DESC; 

हालांकि यह मुझे गलत जवाब दे रहा है, लेकिन अगर मैं ROWNUM <= 1 खंड निकालें, तब सही जवाब परिणाम सेट के शीर्ष पर है ।

तो मैं इस प्रश्न में सही उत्तर देने के लिए क्या बदल सकता हूं?

धन्यवाद, एलेक्स।

संपादित करें: यह कहना भूल गया कि मैं केवल परिणाम सेट में पहला परिणाम वापस करने के लिए क्वेरी चाहता हूं।

+2

समस्या यह है कि ROWNUM से पहले डाटासेट क्रमबद्ध किया जाता है निर्दिष्ट किया जाए। –

उत्तर

16

ROWNUM फ़िल्टर सॉर्टिंग से पहले लागू होता है। आपको क्या करने की जरूरत है यह है:

SELECT * FROM (
    SELECT CLIENT.CLIENTNO, CLIENT.CNAME, TOTALS.TOTAL 
    FROM CLIENT, (SELECT CLIENTNO, SUM(AMOUNT) AS TOTAL 
        FROM PURCHASE GROUP BY CLIENTNO) TOTALS 
    WHERE CLIENT.CLIENTNO = TOTALS.CLIENTNO 
    ORDER BY TOTALS.TOTAL DESC 
) 
WHERE ROWNUM <= 1 
+0

http://stackoverflow.com/questions/7753936/fetching-data-using-rownum-in-oracle/7754076#7754076 – rahularyansharma

+0

@rahularyansharma। अच्छा लिंक यह वास्तव में संबंधित नहीं है, है, है ना? –

3

लपेटें ROWNUM जहां एक और बाहरी क्वेरी में

select * from (
SELECT CLIENT.CLIENTNO, CLIENT.CNAME, TOTALS.TOTAL 
FROM CLIENT, (SELECT CLIENTNO, SUM(AMOUNT) AS TOTAL FROM PURCHASE GROUP BY CLIENTNO) TOTALS 
WHERE CLIENT.CLIENTNO = TOTALS.CLIENTNO ORDER BY TOTALS.TOTAL DESC) 
where ROWNUM <= 1; 
संबंधित मुद्दे