Подзапрос столбца агрегата OData - PullRequest
0 голосов
/ 16 октября 2018

У меня есть требование запросить конечную точку 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))

Однако я не могу понять, как выполнитьподзапрос по каждому из столбцов.

...