Удалить повторяющиеся значения из строки в oracle - PullRequest
1 голос
/ 04 мая 2020

У меня есть требование, когда у меня есть входные данные, такие как

Col1 COl2 Col3
A1    2    B
A1    1    A
A1    3    B
B1    1    A
B2    2    B
B2    3    C
B4    4    C
B5    5    A
B6    6    B

Требуемый вывод:

Col1 COl2 Col3
A1    2    AB
A1    1    AB
A1    3    AB
B1    1    ABC
B2    2    ABC
B2    3    ABC
B4    4    ABC
B5    5    ABC
B6    6    ABC    

Пробное решение:

select col1,col2,listagg(col3,'') within group (order by col3) over(partition by col1)
from tab

Вывод запроса:

Col1 COl2 Col3
A1    2    ABB
A1    1    ABB
A1    3    ABB
B1    1    AABBCC
B2    2    AABBCC
B2    3    AABBCC
B4    4    AABBCC
B5    5    AABBCC
B6    6    AABBCC

Может ли кто-нибудь помочь здесь в удалении повторяющихся алфавитов.

Спасибо

1 Ответ

0 голосов
/ 04 мая 2020

Вы можете использовать подзапрос:

select col1, col2,
       listagg(case when seqnum = 1 then col3 end, '') within group (order by col3) over (partition by col1)
from (select t.*,
             row_number() over (partition by col1, col3 order by col3) as seqnum
      from tab t
     ) t
...