Exemplo n.º 1
0
        public ISqlNode VisitOver(SqlOverNode n)
        {
            Visit(n.Expression);
            if (n.PartitionBy == null && n.OrderBy == null && n.RowsRange == null)
            {
                return(n);
            }
            Append(" OVER (");
            if (n.PartitionBy != null)
            {
                Append("PARTITION BY ");
                Visit(n.PartitionBy);
            }
            if (n.OrderBy != null)
            {
                Append(" ORDER BY ");
                Visit(n.OrderBy);
            }
            if (n.RowsRange != null)
            {
                Append(" ROWS ");
                Visit(n.RowsRange);
            }

            Append(")");
            return(n);
        }
Exemplo n.º 2
0
        public virtual ISqlNode VisitOver(SqlOverNode n)
        {
            var e = Visit(n.Expression);
            var p = Visit(n.PartitionBy);
            var o = Visit(n.OrderBy);
            var r = Visit(n.RowsRange);

            return(n.Update(e, p, o, r));
        }
Exemplo n.º 3
0
        private ISqlNode ParseSelectColumnExpression(ITokenizer t)
        {
            var expr      = ParseScalarExpression(t);
            var lookahead = t.Peek();

            if (lookahead.IsKeyword("OVER"))
            {
                // "OVER" "(" <OverPartitionBy>? <OverOrderBy>? <OverRows>? ")"
                var overToken = t.GetNext();
                t.Expect(SqlTokenType.Symbol, "(");
                var overNode = new SqlOverNode
                {
                    Location    = overToken.Location,
                    Expression  = expr,
                    PartitionBy = ParseOverPartitionBy(t),
                    OrderBy     = ParseOverOrderBy(t),
                    RowsRange   = ParseOverRows(t)
                };
                t.Expect(SqlTokenType.Symbol, ")");
                return(overNode);
            }

            return(expr);
        }
 public override ISqlNode VisitOver(SqlOverNode n)
 {
     return(base.VisitOver(n));
 }