public string GetCalculatedColumnFieldName(string fieldName, bool useDateStats, bool dontAggregate = false, bool useFieldAlias = false) { using (new DebugTimer("CalculatedColumnHelper.GetCalculatedColumnFieldName")) { string originalFieldName = fieldName; fieldName = originalFieldName; if (!QueryHelpers.IsCalculatedColumnCompiled(fieldName)) { fieldName = new SqlExpressionParser().ConvertToSql(fieldName); } fieldName = ExpandCalculatedColumn(new Stack <string>(), fieldName, useFieldAlias); var columnsInCalculation = FindColumnsInCalculatedField(fieldName); var statsTable = GetStatsTable(useDateStats); //fieldName = FixCalculatedFieldNameToUseActualFieldNames(fieldName, statsTable, ref columnsInCalculation, useFieldAlias); Dictionary <string, string> tempFieldNameLookups; fieldName = FixCalculatedFieldNameToUseTemporaryFieldNames(fieldName, statsTable, ref columnsInCalculation, out tempFieldNameLookups, useFieldAlias); if (!QueryHelpers.IsCalculatedColumnCompiled(fieldName)) { fieldName = new SqlExpressionParser().ConvertToSql(fieldName); } var shouldAggregate = !dontAggregate && fieldName.Contains(' '); foreach (var foundColumn in columnsInCalculation) { var aggregate = QueryHelpers.GetAggregate(foundColumn.Key.FieldAggregationMethod); string replaceColumnName = tempFieldNameLookups[foundColumn.Value]; if (shouldAggregate) { replaceColumnName = GenerateAggregateColumnSql(aggregate, replaceColumnName); } fieldName = ReplaceFieldName(new Stack <string>(), fieldName, foundColumn.Value, replaceColumnName); } return(fieldName); } }