private Scope computeAndAssignOrderByScope(OrderBy node, Scope sourceScope, Scope outputScope) {
      // ORDER BY should "see" both output and FROM fields during initial analysis and
      // non-aggregation query planning
      Scope orderByScope =
          Scope.builder()
              .withParent(sourceScope)
              .withRelationType(outputScope.getRelationId(), outputScope.getRelationType())
              .build();
      analysis.setScope(node, orderByScope);
      return orderByScope;
    }
Check if there is Columns function in expression, and verify they are same if there are multi
Column functions.

@param expression input expression
@return if there is Columns function in expression
@throws SemanticException if there are multi Columns functions but different
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/StatementAnalyzer.java