文字列の集計を行う方法はたくさんありますが、最も簡単なのはユーザー定義関数です。 関数を必要としない方法でこれを試してください。 注意として、関数なしで簡単な方法はありません。
これは、カスタム関数を使用しない最短ルートです:(ROW_NUMBER()およびSYS_CONNECT_BY_PATH関数を使用します)
SELECT questionid,
LTRIM(MAX(SYS_CONNECT_BY_PATH(elementid,','))
KEEP (DENSE_RANK LAST ORDER BY curr),',') AS elements
FROM (SELECT questionid,
elementid,
ROW_NUMBER() OVER (PARTITION BY questionid ORDER BY elementid) AS curr,
ROW_NUMBER() OVER (PARTITION BY questionid ORDER BY elementid) -1 AS prev
FROM emp)
GROUP BY questionid
CONNECT BY prev = PRIOR curr AND questionid = PRIOR questionid
START WITH curr = 1;