Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Row_number over PARTITION BY is not populating correct values?

Rajesh123Nov 13 2018 — edited Nov 22 2018

Hi All,

Existing sql query...using rn=1

SELECT a.*

FROM   (SELECT Min(check_num) over( PARTITION BY invoice_num) check_num,

               invoice_num,

               Min(check_date)over( PARTITION BY invoice_num) PAYMENT_DATE,

               Row_number()   over (PARTITION BY invoice_num ORDER BY check_date)      rn

        FROM   table_x) a

WHERE rn = 1

If i see the data has 2 different rn values...only one row is coming because of rn=1 

WITH table_x

     AS (SELECT '1111'                            check_num,

                '1111-1'                          invoice_num,

                To_date('2/7/2012', 'MM/DD/YYYY') check_date

         FROM   dual

         UNION ALL

         SELECT '2222'                            check_num,

                '1111-1'                          invoice_num,

                To_date('2/7/2012', 'MM/DD/YYYY') check_date

         FROM   dual)

SELECT Min(check_num) over( PARTITION BY invoice_num) check_num,

       invoice_num,

       Min(check_date)over( PARTITION BY invoice_num) PAYMENT_DATE,

       Row_number() over ( PARTITION BY invoice_num ORDER BY check_date) rn

FROM   table_x

  

CHECK_NUMINVOICE_NUMPAYMENT_DATERN
11111111-17-Feb-20121
22221111-17-Feb-20122

do you want me to use RANK() function?

Please suggest if any impact on this?

Oracle Version : 11.2

Thanks

Message was edited by: Rajesh123 Updated output....

This post has been answered by mNem on Nov 13 2018
Jump to Answer
Comments
Post Details
Added on Nov 13 2018
19 comments
2,021 views