SELECT DATE_CURRENT
, TRUNC (DATE_CURRENT, 'Q') AS Q1F
, LAST_DAY (ADD_MONTHS(TRUNC (DATE_CURRENT, 'Q'),2)) AS Q1L
, LAST_DAY (ADD_MONTHS(trunc(DATE_CURRENT,'Q'),-1)) AS Q2F
, ADD_MONTHS(LAST_DAY (ADD_MONTHS(trunc(DATE_CURRENT,'Q'),-1)),-3)+1 AS Q2L
, LAST_DAY (ADD_MONTHS(trunc(DATE_CURRENT,'Q'),-4)) AS Q3F
, ADD_MONTHS(LAST_DAY (ADD_MONTHS(trunc(DATE_CURRENT,'Q'),-4)),-3)+1 AS Q3L
, LAST_DAY (ADD_MONTHS(trunc(DATE_CURRENT,'Q'),-7)) AS Q4F
, ADD_MONTHS(LAST_DAY (ADD_MONTHS(trunc(DATE_CURRENT,'Q'),-7)),-3)+1 AS Q4L
, LAST_DAY (ADD_MONTHS(trunc(DATE_CURRENT,'Q'),-10)) AS Q5F
, ADD_MONTHS(LAST_DAY (ADD_MONTHS(trunc(DATE_CURRENT,'Q'),-10)),-3)+1 AS Q5L
, LAST_DAY (ADD_MONTHS(trunc(DATE_CURRENT,'Q'),-13)) AS Q6F
, ADD_MONTHS(LAST_DAY (ADD_MONTHS(trunc(DATE_CURRENT,'Q'),-13)),-3)+1 AS Q6L
, LAST_DAY (ADD_MONTHS(trunc(DATE_CURRENT,'Q'),-16)) AS Q7F
, ADD_MONTHS(LAST_DAY (ADD_MONTHS(trunc(DATE_CURRENT,'Q'),-16)),-3)+1 AS Q7L
, LAST_DAY (ADD_MONTHS(trunc(DATE_CURRENT,'Q'),-19)) AS Q8F
, ADD_MONTHS(LAST_DAY (ADD_MONTHS(trunc(DATE_CURRENT,'Q'),-19)),-3)+1 AS Q8L
FROM
(
SELECT TO_DATE ('05.03.2017', 'DD.MM.YYYY') AS DATE_CURRENT FROM DUAL
UNION SELECT TO_DATE ('30.06.2014', 'DD.MM.YYYY') AS DATE_CURRENT FROM DUAL
UNION SELECT TO_DATE ('30.04.2014', 'DD.MM.YYYY') AS DATE_CURRENT FROM DUAL
UNION SELECT TO_DATE ('31.03.2014', 'DD.MM.YYYY') AS DATE_CURRENT FROM DUAL
)