我创建了一个表:
wixlibs
使用Listagg()通过查询获取Fname和Lname的串联聚合:
Grade FName LName-
A JOHN M
A JOE M
A JOAKIM M
我得到的输出是:
SELECT GRADE,listagg(st_name || ';' || st_last_name, ';')
within group ( order by st_name) as names FROM STUDENTS GROUP BY GRADE;
我想在名称栏中保留唯一的一个“ M”,并希望丢弃其他M。请向我提供有关如何完成此操作的任何建议。请不要仅针对此问题。谢谢!
示例: KEVIN; M; SEEHO; M应该是KEVIN; M; SEEHO,JOAKIM; M; JOE; M; JOHN; M应该是JOAKIM; M; JOE; JOHN等...
答案 0 :(得分:1)
对于简单查询,可以使用子查询:
SELECT GRADE, listagg(name, ';') within group (order by name) as names
FROM (SELECT DISTINCT GRADE, st_name || ';' || st_last_name as name
FROM STUDENTS
) s
GROUP BY GRADE;
我觉得奇怪的是,您同时使用分号来分隔st_name
和st_last_name
并分隔不同的值。我希望使用不同的分隔符-'john;smith;jane;doe;'
比'john,smith;jane,doe'
更难读。