Как запросить резюме / группу в devexpress с расширенными запросами

Простой запрос:

var viewModel = {
    dataSource: Application_with_Chart.db.nom_clasa_articole.toDataSource({
        select: ["id","product", "quantity"]
    })
};

return viewModel;

в SQL:

SELECT id,product,quantity
FROM nom_clasa_articole

Это просто, но мне нужен запрос с группировкой и суммой:

SELECT id, product, SUM(quantity)
FROM nom_clasa_articole
GROUP BY product

Как я могу написать этот запрос в devexpress?

1 ответ

Если я не ошибаюсь, речь идет о многоканальных приложениях DevExtreme. Они пользуются услугами OData.

OData Prodocol не имеет прямого эквивалента SQL GROUP BY, У вас есть два варианта здесь:

  1. Используйте операции службы OData для группировки на стороне сервера.

  2. Выполните группировку на клиенте в postProcess обработчик, как показано ниже.

Группировка на стороне клиента:

var viewModel = {
    dataSource: Application32.db.nom_clasa_articole.toDataSource({
        select: ["id", "product", "quantity"],

        postProcess: function(items) {
            // Grouping occurs here
            var groups = {};

            $.each(items, function() {
                var groupKey = this.product;
                if(!groups[groupKey])
                    groups[groupKey] = { quantity: 0 };

                groups[groupKey].quantity += this.quantity;
            });

            return $.map(groups, function(v, k) { 
                return { product: k, quantity: v.quantity }; 
            });
        }
    })
};
Другие вопросы по тегам