Возвращает экземпляр агрегирующей функции
EntitySchemaAggregationQueryFunction с заданным типом для колонки по укзанному пути относительно корневой схемы.
Синтаксис
Параметры
- aggregationType
- Тип агрегирующей функции.
- columnPath
- Путь к колонке схемы относительно корневой схемы.
Тип возвращаемого значения
Экземпляр созданной агрегирующей функции
EntitySchemaAggregationQueryFunction.
Исключения
Пример
В данном примере создается запрос, возвращающий сумму счетов по контрагенту "Some Company", выставленных в текущем месяце.
// Получение экземпляра менеджера схем объектов.
EntitySchemaManager esqManager = UserConnection.EntitySchemaManager;
// Получение экземпляра EntitySchemaQuery с корневой схемой "Invoice".
var esqResult = new EntitySchemaQuery(esqManager, "Invoice");
// Добавление к запросу колонки, в которой будет вычисляться сумма счетов.
esqResult.AddColumn(esqResult.CreateAggregationFunction(AggregationTypeStrict.Sum,
"PaymentAmount"));
// Создание фильтра для выборки счетов по контрагенту "Some Company".
var filterAccount = esqResult.CreateFilterWithParameters
(FilterComparisonType.Equal, "Account.Name", "Some Company");
// Создание фильтра для выборки счетов за текущий месяц.
var filterDate = esqResult.CreateFilter(FilterComparisonType.Equal, "CreatedOn",
EntitySchemaQueryMacrosType.CurrentMonth);
// Добавление фильтров в коллекцию фильтров результирующего запроса.
esqResult.Filters.Add(filterAccount);
esqResult.Filters.Add(filterDate);
// Получение текста результирующего запроса.
string esqSqlText = esqResult.GetSelectQuery(UserConnection).GetSqlText();
// Текст результирующего sql-запроса.
// MS SQL:
// SELECT
// SUM([Invoice].[PaymentAmount]) [Sum]
// FROM
// [dbo].[Invoice] [Invoice]
// WHERE
// EXISTS (
// SELECT
// [Account].[Id] [Id]
// FROM
// [dbo].[Account] [Account]
// WHERE
// [Invoice].[AccountId] = [Account].[Id]
// AND [Account].[Name] = @P1)
// AND ([Invoice].[CreatedOn] >= @P2
// AND [Invoice].[CreatedOn] < @P3)
// Oracle:
// SELECT
// SUM("Invoice"."PaymentAmount") "Sum"
// FROM
// "Invoice" "Invoice"
// WHERE
// EXISTS (
// SELECT
// "Account"."Id" "Id"
// FROM
// "Account" "Account"
// WHERE
// "Invoice"."AccountId" = "Account"."Id"
// AND "Account"."Name" = :P1)
// AND ("Invoice"."CreatedOn" >= :P2
// AND "Invoice"."CreatedOn" < :P3)
|
Смотри также