Я бы предложил использовать подзапрос для определения столбцов на основе переменных, а затем агрегировать и упорядочивать их.
Примерно так:
SELECT COUNT(*) as noofrecords, order_by, value
FROM (SELECT t.*,
TO_CHAR(TO_DATE(EXTRACT(MONTH FROM start_date), 'MM'), 'month') as value
EXTRACT(MONTH FROM start_date) as order_by
(CASE 'YEAR' ----- getting this value from a variable
WHEN 'YEAR' THEN EXTRACT(MONTH FROM start_date)
END) as grouping_var
END
(CASE 'MONTH' ----- getting this value from a variable
WHEN 'MONTH' THEN EXTRACT(MONTH FROM start_date)
END) as filter_criteria
FROM tab_name
WHERE EXTRACT(YEAR FROM start_date) = 2019
) t
WHERE filter_column = 2 ----- setting this value from a
GROUP BY grouping_var, order_by, value
ORDER BY order_by;
Запрос не 'это точно имеет смысл. Но я подозреваю, что когда вы подадите заявление о своей проблеме, вы увидите, как этот подход помогает.