我必须连接一列的值,根据同一个表中已知的“等级”对它们进行分组。
TAB_LOOKUP
str_name rank
en 1
bs 2
cn 3
bf 4
co 5
源表中的数据
Source_Tab
id str_name
1 co
1 en
1 bf
2 bs
2 co
3 bf
3 bs
输出数据应该看起来像
id concat_str_name
1 en | bf | co
2 bs | co
3 bs | bf
我可以使用list_agg等函数吗?
答案 0 :(得分:4)
这是你想要的吗?
select listagg(str_name, ' | ') within group (order by rank)
from source_tab t join
tab_lookup l
on t.str_name = l.str_name
group by id;