protected static string GetColumnName(tgColumnItem column) { if (column.Query == null || column.Query.tg.JoinAlias == " ") { return(Delimiters.ColumnOpen + column.Name + Delimiters.ColumnClose); } else { IDynamicQuerySerializableInternal iQuery = column.Query as IDynamicQuerySerializableInternal; if (iQuery.IsInSubQuery) { return(column.Query.tg.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, tgDynamicQuerySerializable query, tgCase caseWhenThen) { string sql = string.Empty; Tiraggo.DynamicQuery.tgCase.tgSimpleCaseData caseStatement = caseWhenThen; tgColumnItem column = caseStatement.QueryItem; sql += "CASE "; List <tgComparison> list = new List <tgComparison>(); foreach (Tiraggo.DynamicQuery.tgCase.tgSimpleCaseData.tgCaseClause 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 "; if (column.HasAlias) { sql += " AS " + Delimiters.AliasOpen + column.Alias + Delimiters.AliasClose; } else { sql += " AS " + Delimiters.ColumnOpen + column.Alias + Delimiters.ColumnClose; } return(sql); }