Не совсем я понял проблемы, и почему нельзя написать по вьюхе на каждый тип уведомлений.
Но как вариант с извращениями: Второй и третий запрос запилить во вьюху.
Четко обозначить сколько полей Вам нужно для всех 20 уведомлений.
Создать процедуру, в которой инпут - категория, тип уведомления.
Внутри написать ветвистую логику для разных уведомлений, но всегда делать запросы, которые возвращают одинаковое количество колонок. Тут используете одну вьюху, которую не надо 100500 раз дублировать в запросах.