コード例 #1
0
        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
                                 ));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        public string Compile(IHavingFilter filter, SelectQuery query, IQueryParameterManager parameters)
        {
            var having = filter as SqlHavingFilter;

            return(having.Sql);
        }