diff --git a/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs b/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs index afc19c2f8..3ac5caefa 100644 --- a/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs +++ b/backend/Origam.DA.Service/Generators/AbstractSqlCommandGenerator.cs @@ -1004,15 +1004,6 @@ internal void SelectParameterDeclarationsSetSql(StringBuilder result, Hashtable .OfType() .Any(field => selectParameters.ColumnsInfo.ColumnNames.Contains(field.Name)); - bool wrapInGroupingSelect = hasLookupField && - customGrouping != null; - if (wrapInGroupingSelect) - { - ColumnData groupColumn = selectParameters.ColumnsInfo.Columns - .FirstOrDefault(column => column.Name == ColumnData.GroupByCountColumn.Name); - selectParameters.ColumnsInfo.Columns.Remove(groupColumn); - selectParameters.CustomGrouping = null; - } if (!(entity.EntityDefinition is TableMappingItem)) { @@ -1263,15 +1254,21 @@ internal void SelectParameterDeclarationsSetSql(StringBuilder result, Hashtable finalString += $" OFFSET {rowOffset} ROWS FETCH NEXT {rowLimit} ROWS ONLY;"; } - if (wrapInGroupingSelect) + if (hasLookupField && customGrouping != null) { - string columnNames = string.Join(", ", - selectParameters.ColumnsInfo.ColumnNames.Select( + var columnNames = selectParameters.ColumnsInfo.ColumnNames; + if (selectParameters.AggregatedColumns.Count > 0) + { + columnNames.AddRange( + selectParameters.AggregatedColumns.Select(x => x.SqlQueryColumnName)); + } + string sqlColumnNames = string.Join(", ", + columnNames.Select( col => sqlRenderer.NameLeftBracket + col + sqlRenderer.NameRightBracket)); - finalString = $"SELECT {columnNames}, {sqlRenderer.CountAggregate()}(*) AS {ColumnData.GroupByCountColumn} FROM (\n"+ + finalString = $"SELECT {sqlColumnNames}, {sqlRenderer.CountAggregate()}(*) AS {ColumnData.GroupByCountColumn} FROM (\n"+ finalString + "\n" + ") as Query\n"+ - $"GROUP BY {columnNames}"; + $"GROUP BY {sqlColumnNames}"; } return finalString; diff --git a/frontend-html/src/model/entities/TablePanelView/ColumnConfigurationModel.tsx b/frontend-html/src/model/entities/TablePanelView/ColumnConfigurationModel.tsx index c3bdfc951..dff947cdb 100644 --- a/frontend-html/src/model/entities/TablePanelView/ColumnConfigurationModel.tsx +++ b/frontend-html/src/model/entities/TablePanelView/ColumnConfigurationModel.tsx @@ -33,6 +33,7 @@ import { GroupingUnit, groupingUnitToLabel } from "model/entities/types/Grouping import { AggregationType, tryParseAggregationType } from "model/entities/types/AggregationType"; import { T } from "utils/translation"; import { IOption } from "@origam/components"; +import _ from "lodash"; export interface IColumnOptions { canGroup: boolean; @@ -143,11 +144,14 @@ export class ColumnConfigurationModel{ @action.bound onColumnConfSubmit(configuration: ITableConfiguration): void { + const aggregationsBefore = this.tablePanelView?.aggregations.aggregationList; const groupingWasOnBefore = this.tablePanelView?.groupingConfiguration.isGrouping; configuration.apply(this.tablePanelView); - const groupingIsOffNow = !this.tablePanelView?.groupingConfiguration.isGrouping; - - if (groupingWasOnBefore && groupingIsOffNow) { + const groupingIsOnNow = this.tablePanelView?.groupingConfiguration.isGrouping; + const aggregationsNow = this.tablePanelView?.aggregations.aggregationList; + if (groupingWasOnBefore && !groupingIsOnNow || + groupingIsOnNow && !_.isEqual(aggregationsBefore, aggregationsNow)) + { getFormScreenLifecycle(this).loadInitialData(); } getDialogStack(this).closeDialog(dialogKey);