Skip to main content

Posts

Showing posts from May, 2015

Aggregating data from a number of rows into a single rows & Converting rows into columns in Oracle

For Aggregating data from a number of rows into a single row we have various functions in oracle some of them are listagg function, xmlagg and wm_concat function Consider the following example Dept No Emp Name 10 John 11 Neo 12 Anderson 12 Trinity 11 Morpheous 12 Smith Now we want the data in the following way aggregated based on Dept No Dept No Emp Name 10 John 11 Morpheous,Neo 12 Anderson,Smith,Trinity We can achieve this by using the LISTAGG function in the following way SELECT deptno, LISTAGG(ename, ',') WITHIN GROUP (ORDER BY ename) AS employees FROM   emp GROUP BY deptno; Using XMLAGG function SELECT deptno,  RTRIM ( xmlagg (xmlelement (c, ename || ',') order by ename).extract ('//text()') , ',' ) AS