这是我在StackOverflow中的第一个问题,我希望得到你的帮助。
我需要一个查询,该查询返回一个字符串,其中所有用户的分数连接在一起,按用户名分组。我将尝试举例说明:
username score
John421 4028
Robin 5392
Ninaww 2234
Robin 4631
Robin 2792
John421 8924
查询应返回:
username all_scores
John421 '4028,8924'
Robin '5392,4631,2792'
Ninaww '2234'
希望有人能帮助我,并提前致谢! :)
答案 0 :(得分:0)
使用oracle listagg()聚合函数,如下所述:
http://www.oracle-base.com/articles/misc/string-aggregation-techniques.php
例如,
select username, listagg(score, ',') within group (order by score) as all_scores
from mytable
group by username
答案 1 :(得分:0)
这里应该使用listagg函数。可以使用此函数的分析版本或组集版本。
由于想要按用户名汇总结果,因此群组版本似乎是正确的选择。
- 标识该组(此处为用户名)。
- 识别分隔符,&#39 ;; '
- 识别分数的分类。例如得分)
SELECT username,
LISTAGG(score, '; ') WITHIN GROUP (ORDER BY score) all_scores
FROM user_scores
GROUP BY username
ORDER BY username;