public function getSql(SqlWalker $sqlWalker)
{
$result = 'LISTAGG(' . $this->listaggField->dispatch($sqlWalker);
if ($this->separator) {
$result .= ', ' . $sqlWalker->walkStringPrimary($this->separator) . ')';
} else {
$result .= ')';
}
$result .= ' WITHIN GROUP (' . $sqlWalker->walkOrderByClause($this->orderBy) . ')';
if (count($this->partitionBy)) {
$partitionBy = array();
foreach ($this->partitionBy as $part) {
$partitionBy[] = $part->dispatch($sqlWalker);
}
$result .= ' PARTITION BY (' . join($partitionBy, ',') . ')';
}
return $result;
}