diff --git a/backend/src/main/java/com/bakdata/conquery/mode/local/UpdateMatchingStatsSqlJob.java b/backend/src/main/java/com/bakdata/conquery/mode/local/UpdateMatchingStatsSqlJob.java index 6f5d2d1897..e344019e53 100644 --- a/backend/src/main/java/com/bakdata/conquery/mode/local/UpdateMatchingStatsSqlJob.java +++ b/backend/src/main/java/com/bakdata/conquery/mode/local/UpdateMatchingStatsSqlJob.java @@ -162,7 +162,8 @@ public void calculateMatchingStats(final TreeConcept treeConcept) { .collect(Collectors.toList()); // if there is no validity date at all, we select no field - final Field validityDateExpression = validityDateMap.isEmpty() ? noField() : toValidityDateExpression(validityDateMap); + + final Field validityDateExpression = toValidityDateExpression(validityDateMap, !relevantColumns.isEmpty()); final SelectJoinStep query = dslContext.select(relevantColumnsAliased) .select( @@ -290,11 +291,24 @@ private Condition toJooqCondition(final Connector connector, CTCondition childCo /** * Select the minimum of the least start date and the maximum of the greatest end date of all validity dates of all connectors. */ - private Field toValidityDateExpression(final Map> validityDateMap) { + private Field toValidityDateExpression(final Map> validityDateMap, boolean grouped) { + if (validityDateMap.isEmpty()){ + return noField(String.class); + } + final List validityDates = validityDateMap.values().stream().flatMap(List::stream).map(functionProvider::toDualColumn).toList(); final List> allStarts = validityDates.stream().map(ColumnDateRange::getStart).toList(); final List> allEnds = validityDates.stream().map(ColumnDateRange::getEnd).toList(); - final ColumnDateRange minAndMax = ColumnDateRange.of(min(functionProvider.least(allStarts)), max(functionProvider.greatest((allEnds)))); + + final ColumnDateRange minAndMax; + + if (grouped){ + minAndMax = ColumnDateRange.of(min(functionProvider.least(allStarts)), max(functionProvider.greatest((allEnds)))); + } + else { + minAndMax = ColumnDateRange.of(functionProvider.least(allStarts), functionProvider.greatest(allEnds)); + } + return functionProvider.daterangeStringExpression(minAndMax); }