How to use LISTAGG () on multiple join tables in Oracle
This article mainly explains "how to use LISTAGG () on multiple connection tables in Oracle". The content in the article is simple and clear, and it is easy to learn and understand. Please follow the editor's train of thought to study and learn how to use LISTAGG () on multiple connection tables in Oracle.
You may know how to use LISTAGG () on a single table, but you don't know how to use LISTAGG on multiple join tables. This example shows how to use aggregate functions on joined tables in Oracle 12g.
Suppose we have the following two tables.
Users table
ID name 111aaa222bbb333bbb
Record table
ID tag value 111start1111mid2111end3222start1222end2333start1333mid2333start3
If we want to select all the values marked "start" and "end", as shown in the following figure, how to write the sql query?
Expected results:
ID name aggregate value 111aaa1 Magi 3222bbb1Magi 2333bbb1Magne3
Select u.ID, u.Name, listagg (Value,',') within group (order by Tag) as AggValuesfrom User u left outer join Record ron u.ID = r.ID and r.Tag in ('start',' end') group by u.ID, u.Name
A common mistake is the missing field in the last group by clause. Each selection field should also be in the group by clause. In this example, we chose select ID and Name, so we should use ID and Name to group the results.
Thank you for reading, the above is the content of "how to use LISTAGG () on multiple connection tables in Oracle". After the study of this article, I believe you have a deeper understanding of how to use LISTAGG () on multiple connection tables in Oracle, and the specific use needs to be verified in practice. Here is, the editor will push for you more related knowledge points of the article, welcome to follow!