У меня есть требование запросить конечную точку OData, чтобы вернуть строки, сгруппированные по Status с агрегатными функциями для данных столбца.Например, чтобы вернуть сумму всех счетов-фактур, в которых платежи на сегодняшний день меньше 100, а также вернуть сумму всех счетов-фактур, если платежи на сегодняшний день меньше 500.
Моя модель данных имеет следующие поля(Модель C # предоставляется через OData API).
public class Invoice
{
public string Status {get; set;}
public string InvoiceType {get; set;}
public decimal InvoicePayments {get; set;}
public decimal EligibleValue {get; set;}
}
Я могу получить необходимые данные на уровне SQL-запроса, выполнив следующий запрос:
SELECT
[i].[Status],
COUNT(*) AS [Count],
(SELECT SUM(t.val) FROM (SELECT InvoicePurchaseValue as val FROM Invoice WHERE InvoicePayments < 100) t) AS ValueLessThan100,
(SELECT SUM(t.val) FROM (SELECT InvoicePurchaseValue as val FROM Invoice WHERE InvoicePayments < 500) t) AS ValueLessThan500
FROM [Invoice] AS [i]
GROUP BY [i].[Status]
Но я могу 't на всю жизнь выяснить, как сделать это с помощью одного запроса OData.
Я получил до
http://<myserver>/odata/Invoice?$apply=groupby((Status),aggregate(InvoicePurchaseValue with sum as ValueLessThan100, InvoicePurchaseValue with sum as ValueLessThan500))
Однако я не могу понять, как выполнитьподзапрос по каждому из столбцов.