I have a table as below, I want to extract only one record of every customer having data less than or equal to '06/30/2012' and the largest of the RowNum.
| RowNum | customer_ID | date | balance | 
|---|---|---|---|
| 197 | BS:141723 | 6/30/2012 | 124693.08 | 
| 195 | BS:165012 | 5/31/2012 | 26346.42 | 
| 27 | BS:166289 | 6/30/2012 | 5253.67 | 
| 41 | BS:209459 | 6/30/2012 | 32673.04 | 
| 127 | BS:141723 | 6/30/2012 | 205849.11 | 
| 15 | BS:192907 | 4/30/2012 | 106236.71 | 
| 47 | BS:192907 | 5/31/2012 | 7430.6 | 
| 97 | BS:165012 | 4/30/2012 | 721 | 
The expected output should be:
| customer_ID | balance | RowNum | 
|---|---|---|
| BS:141723 | 124693.08 | 197 | 
| BS:165012 | 26346.42 | 195 | 
| BS:166289 | 5253.67 | 27 | 
| BS:192907 | 7430.6 | 47 | 
| BS:209459 | 32673.04 | 41 | 
I have written this query
select DISTINCT customer_ID, balance
    , MAX(RowNum) over (PARTITION by customer_ID)
from Test 
and the result which I am getting is below which is incorrect.
| customer_ID | balance | RowNum | 
|---|---|---|
| BS:141723 | 124693.08 | 197 | 
| BS:141723 | 205849.11 | 197 | 
| BS:165012 | 721 | 195 | 
| BS:165012 | 26346.42 | 195 | 
| BS:166289 | 5253.67 | 27 | 
| BS:192907 | 7430.6 | 47 | 
| BS:192907 | 106236.71 | 47 | 
| BS:209459 | 32673.04 | 41 | 
 
     
    