diff --git a/source/libs/planner/src/planLogicCreater.c b/source/libs/planner/src/planLogicCreater.c index 44eb8478f174995313c2c2b619a2442b7e292270..e0a67c32e5ba4b16e056839f9efe53fe526a386c 100644 --- a/source/libs/planner/src/planLogicCreater.c +++ b/source/libs/planner/src/planLogicCreater.c @@ -580,15 +580,19 @@ static int32_t createAggLogicNode(SLogicPlanContext* pCxt, SSelectStmt* pSelect, } // set the output - if (TSDB_CODE_SUCCESS == code && NULL != pOutputGroupKeys) { - code = createColumnByRewriteExprs(pOutputGroupKeys, &pAgg->node.pTargets); - } - nodesDestroyList(pOutputGroupKeys); - if (TSDB_CODE_SUCCESS == code && NULL != pAgg->pAggFuncs) { code = createColumnByRewriteExprs(pAgg->pAggFuncs, &pAgg->node.pTargets); } + if (TSDB_CODE_SUCCESS == code) { + if (NULL != pOutputGroupKeys) { + code = createColumnByRewriteExprs(pOutputGroupKeys, &pAgg->node.pTargets); + } else if (NULL == pAgg->node.pTargets && NULL != pAgg->pGroupKeys) { + code = createColumnByRewriteExprs(pAgg->pGroupKeys, &pAgg->node.pTargets); + } + } + nodesDestroyList(pOutputGroupKeys); + if (TSDB_CODE_SUCCESS == code) { *pLogicNode = (SLogicNode*)pAgg; } else {