protected static string GetColumnName(esColumnItem column) { if (column.Query == null || column.Query.es.JoinAlias == " ") { return(Delimiters.ColumnOpen + column.Name + Delimiters.ColumnClose); } else { IDynamicQuerySerializableInternal iQuery = column.Query as IDynamicQuerySerializableInternal; if (iQuery.IsInSubQuery) { return(column.Query.es.JoinAlias + "." + Delimiters.ColumnOpen + column.Name + Delimiters.ColumnClose); } else { string alias = iQuery.SubQueryAlias == string.Empty ? iQuery.JoinAlias : iQuery.SubQueryAlias; return(alias + "." + Delimiters.ColumnOpen + column.Name + Delimiters.ColumnClose); } } }
protected static string GetCaseWhenThenEnd(StandardProviderParameters std, esDynamicQuerySerializable query, esCase caseWhenThen) { string sql = string.Empty; EntitySpaces.DynamicQuery.esCase.esSimpleCaseData caseStatement = caseWhenThen; esColumnItem column = caseStatement.QueryItem; sql += Delimiters.ColumnOpen + column.Alias + Delimiters.ColumnClose + " = "; sql += "CASE "; List <esComparison> list = new List <esComparison>(); foreach (EntitySpaces.DynamicQuery.esCase.esSimpleCaseData.esCaseClause caseClause in caseStatement.Cases) { sql += " WHEN "; if (!caseClause.When.IsExpression) { sql += GetComparisonStatement(std, query, caseClause.When.Comparisons, string.Empty); } else { if (!caseClause.When.Expression.IsLiteralValue) { sql += GetExpressionColumn(std, query, caseClause.When.Expression, false, true); } else { if (caseClause.When.Expression.LiteralValue is string) { sql += Delimiters.StringOpen + caseClause.When.Expression.LiteralValue + Delimiters.StringClose; } else { sql += Convert.ToString(caseClause.When.Expression.LiteralValue); } } } sql += " THEN "; if (!caseClause.Then.IsLiteralValue) { sql += GetExpressionColumn(std, query, caseClause.Then, false, true); } else { if (caseClause.Then.LiteralValue is string) { sql += Delimiters.StringOpen + caseClause.Then.LiteralValue + Delimiters.StringClose; } else { sql += Convert.ToString(caseClause.Then.LiteralValue); } } } if (caseStatement.Else != null) { sql += " ELSE "; if (!caseStatement.Else.IsLiteralValue) { sql += GetExpressionColumn(std, query, caseStatement.Else, false, true); } else { if (caseStatement.Else.LiteralValue is string) { sql += Delimiters.StringOpen + caseStatement.Else.LiteralValue + Delimiters.StringClose; } else { sql += Convert.ToString(caseStatement.Else.LiteralValue); } } } sql += " END "; return(sql); }