/// <summary> /// Creates instance of query aggregate function. /// </summary> /// <param name="function">Sql function</param> /// <param name="parameters">Function parameters and expressions</param> public QueryFunction(QueryAggregateFunction function, params object[] parameters) { // Initialize. PartOfGroupBy = false; FunctionName = function.ToString().ToUpper(); SeperateParameters(parameters); }
public string GenerateAggregateQuery(DatabaseQuery query, QueryAggregateFunction function, string propertyName) { var sqlFunction = function.ToString(); var columnValueExpression = MapColumn(propertyName); if (function == QueryAggregateFunction.Average) { sqlFunction = "AVG"; var propertyType = query.EntityType.GetProperty(propertyName).PropertyType; if (propertyType == typeof(int) || propertyType == typeof(int?)) { columnValueExpression = $"CAST({columnValueExpression} AS decimal)"; } } return($"SELECT {sqlFunction}({columnValueExpression}) FROM {GetTables()}" + GenerateWhere(query)); }