public static ExprIsNull IsNull(ExprValue value) => new ExprIsNull(value, not: false);
public static ExprAggregateFunction Min(ExprValue expression) => AggregateFunction("MIN", false, expression);
public static ExprAggregateFunction MaxDistinct(ExprValue expression) => AggregateFunction("MAX", true, expression);
public static ExprScalarFunction ScalarFunctionDbCustom(string databaseName, string schemaName, string name, ExprValue argument1, params ExprValue[] rest) => new ExprScalarFunction(new ExprDbSchema(new ExprDatabaseName(databaseName), new ExprSchemaName(schemaName)), new ExprFunctionName(false, name), Helpers.Combine(argument1, rest));
public static ExprAggregateFunction CountDistinct(ExprValue expression) => AggregateFunction("COUNT", true, expression);
public static AnalyticFunctionOverPartitionsFrameBuilder AnalyticFunctionFrame(string name, ExprValue argument, params ExprValue[] rest) => new AnalyticFunctionOverPartitionsFrameBuilder(name, Helpers.Combine(argument, rest));
public static FrameBorder Following(ExprValue value) => new FrameBorder(new ExprValueFrameBorder(value, FrameBorderDirection.Following));
public static IQuerySpecificationBuilderInitial SelectTopDistinct(ExprValue top, IReadOnlyList <IExprSelecting> selection) => new QuerySpecificationBuilder(top, true, selection);
public static IQuerySpecificationBuilderInitial SelectTopDistinct(ExprValue top, SelectingProxy selection, params SelectingProxy[] selections) => new QuerySpecificationBuilder(top, true, Helpers.Combine(selection, selections, SelectingProxy.MapSelectionProxy));
public static ColumnMetaBuilder DefaultValue(ExprValue defaultValue) => ColumnMetaBuilder.Default.DefaultValue(defaultValue);
public static IQuerySpecificationBuilderInitial Select(ExprValue selection, params ExprValue[] selections) => new QuerySpecificationBuilder(null, false, Helpers.Combine(selection, selections));
public static ExprCast Cast(ExprValue expression, ExprType asType) => new ExprCast(expression, asType);
public static ExprLike Like(ExprValue test, string pattern) => new ExprLike(test, pattern);
public static ExprIsNull IsNotNull(ExprValue value) => new ExprIsNull(value, not: true);
public static ExprDateAdd DateAdd(DateAddDatePart datePart, int number, ExprValue date) => new ExprDateAdd(datePart, number, date);
public static IQuerySpecificationBuilderInitial SelectTop(int top, ExprValue selection, params ExprValue[] selections) => new QuerySpecificationBuilder(Literal(top), false, Helpers.Combine(selection, selections));
public AnalyticFunctionOverOrderByFrameBuilder OverPartitionBy(ExprValue item, params ExprValue[] rest) => new AnalyticFunctionOverOrderByFrameBuilder(this._name, this._arguments, Helpers.Combine(item, rest));
public static IQuerySpecificationBuilderInitial SelectTopDistinct(ExprValue top, ExprValue selection, params ExprValue[] selections) => new QuerySpecificationBuilder(top, true, Helpers.Combine(selection, selections));
public static FrameBorder Preceding(ExprValue value) => new FrameBorder(new ExprValueFrameBorder(value, FrameBorderDirection.Preceding));
public static ExprOrderByItem Asc(ExprValue value) => new ExprOrderByItem(value, false);
public static ExprScalarFunction ScalarFunctionSys(string name, ExprValue argument1, params ExprValue[] rest) => new ExprScalarFunction(null, new ExprFunctionName(true, name), Helpers.Combine(argument1, rest));
public static ExprOrderByItem Desc(ExprValue value) => new ExprOrderByItem(value, true);
public static ExprAggregateFunction Count(ExprValue expression) => AggregateFunction("COUNT", false, expression);
//Known scalar functions public static ExprFuncIsNull IsNull(ExprValue test, ExprValue alt) => new ExprFuncIsNull(test, alt);
public static ExprAnalyticFunction CountOver(ExprValue expression, params ExprValue[] partitions) => AnalyticFunction("COUNT", new [] { expression }, new ExprOver(partitions.Length == 0 ? null : partitions, null, null));
public static ExprAggregateFunction AggregateFunction(string name, bool distinct, ExprValue expression) => new ExprAggregateFunction(distinct, new ExprFunctionName(true, name), expression);
public static ExprAggregateFunction Max(ExprValue expression) => AggregateFunction("MAX", false, expression);
public static ExprFuncCoalesce Coalesce(ExprValue test, ExprValue alt, params ExprValue[] rest) => new ExprFuncCoalesce(test, Helpers.Combine(alt, rest));
public static ExprAggregateFunction Sum(ExprValue expression) => AggregateFunction("SUM", false, expression);
public ExprBooleanGtEq(ExprValue left, ExprValue right) { this.Left = left; this.Right = right; }