Başlık karışık gelebilir ama önemli bir mevzudur kendisi.
hayvan gibi oluşan listenin içerisinde gruplama yaparak belirli bir field alanını string olrak birbirine birleştirip tek satırda toplamak istiyordum. Ula araştır taraştır birleştir hep bir sorun ile karşılaştım. iç içe yazdığım select komutlarını daha önce bu kadar uğraşmamıştım.
Sorunu çözmenin yolu çok kolaymış. O kadar uğraşacağıma gugıllasaydım bulacakmışım. Neyse, gelelim örneğe.
Aşağıdaki veri var bende diyelim;
DEPTNO ENAME
---------- ----------
20 SMITH
30 ALLEN
30 WARD
20 JONES
30 MARTIN
30 BLAKE
10 CLARK
20 SCOTT
10 KING
30 TURNER
20 ADAMS
30 JAMES
20 FORD
10 MILLER
istediğim çıktı ise şu:
DEPTNO EMPLOYEES
---------- --------------------------------------------------
10 CLARK,KING,MILLER
20 SMITH,FORD,ADAMS,SCOTT,JONES
30 ALLEN,BLAKE,MARTIN,TURNER,JAMES,WARD
Yazılan kod ise çok komik. Bu kadar uğraşmaya bu kod, küfür sebebi yeminle. Seviyoruz seni oracle;
SELECT deptno, LISTAGG(ename, ',') WITHIN GROUP (ORDER BY ename) AS employees
FROM emp
GROUP BY deptno;