public string Compile(IHavingFilter filter, SelectQuery query, IQueryParameterManager parameters) { var having = filter as ColumnValueHavingFilter; var valueString = parameters.Parameterize(having.RightValue.Value, having.RightValue.Type, having.ParameterAlias ?? having.LeftColumn.Field.Name); if (having.IsNullValue != null) { string isnullQuotes = having.RightValue.Type.IsStringType() ? "'" : null; return(string.Format("{0}({1}ISNULL({2},{3})) {4} {5}", having.Aggregate.ToSqlString(), having.Aggregate == Aggregate.Bit || having.Aggregate == Aggregate.BitMax ? "0+" : null, // fix bit field aggregation for nulls having.LeftColumn.FullName, isnullQuotes + having.IsNullValue + isnullQuotes, having.Operator.ToSqlString(), valueString )); } return(string.Format("{0}({1}{2}) {3} {4}", having.Aggregate.ToSqlString(), having.Aggregate == Aggregate.Bit || having.Aggregate == Aggregate.BitMax ? "0+" : null, // fix bit field aggregation for nulls having.LeftColumn.FullName, having.Operator.ToSqlString(), valueString )); }
public string Compile(IHavingFilter filter, SelectQuery selectQuery, IQueryParameterManager parameters) { var havingFilters = filter as HavingFilterCollection; if (!havingFilters.Any()) { return("(1 = 1)"); } var HavingCompiler = new HavingFilterCompiler(); var operatorString = havingFilters.GroupingOperator.ToSqlString(); var result = string.Empty; bool first = true; foreach (var Having in havingFilters) { result += string.Format("\n\t {0} {1} ", !first ? operatorString : null, HavingCompiler.Compile(Having, selectQuery, parameters) ); first = false; } return(string.Format("({0} \n\t )", result)); }
public string Compile(IHavingFilter filter, SelectQuery query, IQueryParameterManager parameters) { var having = filter as SqlHavingFilter; return(having.Sql); }