oracle Listagg

Delimited list با LISTAGG در اوراکل

 

در قديم به سه طريق مي توانستيم در دیتابیس Oracle ليست هايي با Delimiter هاي خاص ايجاد كرد

a) Custom Function
b) SYS_CONNECT_BY_PATH
c) Custom Aggregate Functions

حال مي توان بوسيله LISTAGG Function در اوراکل براحتي اين ليست ها را حتي در كوئري هاي پيچيده با كارايي بهتر ايجاد كرد.
شكل دستور:


LISTAGG (measure_column [, 'delimiter'])
WITHIN GROUP (order_by_clause) [OVER (query_partition_clause)]

مثال:


SELECT d.deptno,
d.dname,
LISTAGG (e.ename, ', ') WITHIN GROUP (ORDER BY e.ename) AS ename_list
FROM dept d,
emp e
WHERE e.deptno(+) = d.deptno
GROUP BY d.deptno, d.dname
ORDER BY d.deptno, d.dname;

جواب بدين صورت مي باشد:


CLARK, KING, MILLER
ADAMS, FORD, JONES, SCOTT, SMITH
ALLEN, BLAKE, JAMES, MARTIN, TURNER, WARD

3/5 - (2 امتیاز)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این قسمت نباید خالی باشد
این قسمت نباید خالی باشد
لطفاً یک نشانی ایمیل معتبر بنویسید.

keyboard_arrow_up
Oracle APEX Capabilities (OAC)