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 "; sql += " AS " + Delimiters.ColumnOpen + column.Alias + Delimiters.ColumnClose; return sql; }
//public tgCase Case(tgQueryItem column) //{ // this.CaseWhen = new tgCase(this.query, this, column); // return this.CaseWhen; //} public tgCase Case() { this.CaseWhen = new tgCase(this.query, this); return this.CaseWhen; }