如何从查询的不同行连接值?

时间:2015-10-21 02:31:54

标签: sql oracle

我必须连接一列的值,根据同一个表中已知的“等级”对它们进行分组。

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等函数吗?

1 个答案:

答案 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;