I have requirement where I have input data like
x
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
Output Required:
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
Solution Tried:
select col1,col2,listagg(col3,'') within group (order by col3) over(partition by col1)
from tab
Output of the query:
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
Can someone help here in removing repeating alphabets.
Thanks
Advertisement
Answer
You can use a subquery:
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