Основной способ сделать это - передать параметры в хранимую процедуру, и там есть логика для UNION, объединяющая все возможные результаты с полем для группировки разделов.
Например, если они имели параметр для «Разделов отчета» и выбрали «1, 2, 3», то этот параметр передается в хранимую процедуру; внутри него используется процедура SplitString для преобразования запятых в формат таблицы, а затем создание другой временной таблицы для хранения результатов. Там все накапливается с полем SectionNumber (1, 2, 3 и т. Д.), А затем возвращается весь лот. Ваша группа группируется по этому, с установленным разрывом страницы, и все.