WITH t AS ( SELECT '2019.05.01' dt FROM dual UNION ALL SELECT '2019.05.15' FROM dual UNION ALL SELECT '2019.05.17' FROM dual UNION ALL SELECT '2019.05.31' FROM dual UNION ALL SELECT '2019.06.05' FROM dual UNION ALL SELECT '2019.06.21' FROM dual UNION ALL SELECT '2019.06.31' FROM dual UNION ALL SELECT '2019.07.01' FROM dual UNION ALL SELECT '2019.07.05' FROM dual UNION ALL SELECT '2019.07.31' FROM dual ) SELECT DECODE(ROW_NUMBER() OVER(PARTITION BY SUBSTR(dt, 1, 7) ORDER BY dt), 1, SUBSTR(dt, 1, 7)) ym , dt FROM t ;