private int setDistinctFunctionAlias(final SelectItemSegment selectItemSegment, final int offset) { if (selectItemSegment instanceof AggregationSelectItemSegment) { AggregationSelectItemSegment aggregationSelectItemSegment = (AggregationSelectItemSegment) selectItemSegment; Optional<String> alias = aggregationSelectItemSegment.getAlias(); if (aggregationSelectItemSegment instanceof AggregationDistinctSelectItemSegment && !alias.isPresent()) { ((AggregationSelectItemSegment) selectItemSegment).setAlias(DerivedAlias.AGGREGATION_DISTINCT_DERIVED.getDerivedAlias(offset)); return offset + 1; } } return offset; }
private SelectItem getAggregationDistinctSelectItem(final SelectStatement selectStatement, final AggregationType aggregationType, final int beginPosition, final int endPosition, final String innerExpression) { Optional<String> alias = aliasExpressionParser.parseSelectItemAlias().isPresent() ? aliasExpressionParser.parseSelectItemAlias() : Optional.of(DerivedAlias.AGGREGATION_DISTINCT_DERIVED.getDerivedAlias(selectStatement.getAggregationDistinctSelectItems().size())); AggregationDistinctSelectItem result = new AggregationDistinctSelectItem( aggregationType, innerExpression, alias, getDistinctColumnName(innerExpression)); selectStatement.getSQLTokens().add(new AggregationDistinctToken(beginPosition, endPosition - 1, result.getDistinctColumnName(), alias)); return result; }