Ejemplo n.º 1
0
        public bool VisitExprOver(ExprOver expr, TCtx arg)
        {
            var res = this.Visit(expr, "Over", arg, out var argOut) && this.Accept("Partitions", expr.Partitions, argOut) && this.Accept("OrderBy", expr.OrderBy, argOut) && this.Accept("FrameClause", expr.FrameClause, argOut);

            this._visitor.EndVisitExpr(expr, arg);
            return(res);
        }
Ejemplo n.º 2
0
        public bool VisitExprOver(ExprOver exprOver, IExpr?parent)
        {
            this.Builder.Append("OVER(");

            if (exprOver.Partitions != null)
            {
                this.AssertNotEmptyList(exprOver.Partitions, "Partition list cannot be empty");
                this.Builder.Append("PARTITION BY ");
                this.AcceptListComaSeparated(exprOver.Partitions, exprOver);
            }

            if (exprOver.OrderBy != null)
            {
                if (exprOver.Partitions != null)
                {
                    this.Builder.Append(' ');
                }
                this.Builder.Append("ORDER BY ");
                exprOver.OrderBy.Accept(this, exprOver);
            }

            if (exprOver.FrameClause != null)
            {
                this.Builder.Append(' ');
                exprOver.FrameClause.Accept(this, exprOver);
            }

            this.Builder.Append(")");
            return(true);
        }
Ejemplo n.º 3
0
 public static ExprOver WithFrameClause(this ExprOver original, ExprFrameClause?newFrameClause)
 => new ExprOver(partitions: original.Partitions, orderBy: original.OrderBy, frameClause: newFrameClause);
Ejemplo n.º 4
0
 public static ExprOver WithOrderBy(this ExprOver original, ExprOrderBy?newOrderBy)
 => new ExprOver(partitions: original.Partitions, orderBy: newOrderBy, frameClause: original.FrameClause);
Ejemplo n.º 5
0
 public static ExprOver WithPartitions(this ExprOver original, IReadOnlyList <ExprValue>?newPartitions)
 => new ExprOver(partitions: newPartitions, orderBy: original.OrderBy, frameClause: original.FrameClause);
Ejemplo n.º 6
0
 public static ExprAnalyticFunction WithOver(this ExprAnalyticFunction original, ExprOver newOver)
 => new ExprAnalyticFunction(name: original.Name, arguments: original.Arguments, over: newOver);
Ejemplo n.º 7
0
 public static ExprAnalyticFunction AnalyticFunction(string name, IReadOnlyList <ExprValue>?arguments, ExprOver over)
 => new ExprAnalyticFunction(new ExprFunctionName(true, name), arguments, over);