How to select last record of each month
The Oracle built in function called LAST_DAY can help you here.

It can be used with dates or timestamps and an example based on your table description is:

SELECT * FROM TABLE1 
WHERE EXTRACT(DAY FROM DDATE) = EXTRACT(DAY FROM LAST_DAY(DDATE))
AND EXTRACT (MONTH FROM DDATE) = 1;


There are many ways to work with dates in Oracle but I like using EXTRACT as it works with dates and timestamps and means you don't have to use the TO_CHAR function.