Не совсем понял что вам нужно, но судя по всему вы про динамическое построение запроса. Если это так, то у меня был проект, где я делал это при помощи aggregate. Было довольно грязно, но другого способа я так и не придумал.
В итоге написал вот такой вот
pipeline builder.
Если погуляете в рамках модуля
pivot-table
, то найдёте много чего интересного.