这是我根据优先级获取前五行的查询。
如果只有两个contact_names可用-说name1
和name2
-我希望输出为name1,name2,,,
。
但是我得到name1,name2
。
如何获取结尾的逗号?
with cte as (
select pc.person_number
,pc.contact_names
,pc.contact_type
,case when pl.relation='parent' then 'a'
when pl.relation='children' then 'b'
when pl.relation='sibling' then 'c'
end as priority
from person_contact pc
,person_lookup pl
where pc.contact_type=pl.contact_type
)
select person_number
,listagg(contact_names,',')
WITHIN GROUP (ORDER BY priority) contact_name
from cte
group by person_number
fetch first 5 rows only
答案 0 :(得分:4)
一种方法是编辑CTE,通过添加一些空行来至少提供所需的行数或行数(在您的示例中为5)。
在您的情况下,考虑到您需要构建字符串,我将简单地将构建字符串的方式编辑为:
listagg(contact_names,',') WITHIN GROUP (ORDER BY priority)
|| rpad(',', 5 - count(*), ',') contact_name