我有一个表,其中两个字段是 id,controlflag.It 看起来像
Id CntrlFlag
121 SSSSSRNNNSSRSSNNR
122 SSSNNRRSSNNRSSSSS
123 RRSSSNNSSSSSSSSSSSSSSS
我必须以下列形式获得输出(R的出现)
Id Flag
121 6,12,17
122 6,7,12
123 1,2
我尝试了 oracle 查询(我从这个论坛获得):
select mtr_id,listagg(str,',') within group (order by lvl) as flags from
( select mtr_id, instr(mtr_ctrl_flags,'R', 1, level) as str, level as lvl
from mer_trans_reject
connect by level <= regexp_count(mtr_ctrl_flags, 'R'))group by mtr_id;
它给出了结果,但第 2 次和第 3 次出现(不是第一次)被重复了。次。看起来像
id Flag
123 6,12,12,12,12,17,17,17,17,17.
有人能知道这里有什么问题吗?