Sql 如何从查询的不同行中提取值?

Sql 如何从查询的不同行中提取值?,sql,oracle,Sql,Oracle,我必须计算列的值,根据同一个表中已知的秩对它们进行分组 制表符查找 str_name rank en 1 bs 2 cn 3 bf 4 co 5 源表中存在的数据 “源”选项卡 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

我必须计算列的值,根据同一个表中已知的秩对它们进行分组

制表符查找

str_name rank
en       1
bs       2
cn       3
bf       4
co       5
源表中存在的数据

“源”选项卡

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\u agg之类的函数吗?

这是您想要的吗

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;
这是你想要的吗

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;