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); }
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)); }
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)); }