Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

मैं listagg . से डुप्लीकेट कैसे हटाऊं?

पहले आपको आवश्यक DISTINCT मान चुनें, फिर उन पर LISTAGG लागू करें। यहां स्कॉट की स्कीमा पर आधारित एक उदाहरण दिया गया है।

SQL> -- Duplicate jobs within the department
SQL> select deptno, listagg(job, ', ') within group (order by job) jobs
  2  from emp
  3  group by deptno;

    DEPTNO JOBS
---------- ------------------------------------------------------------
        10 CLERK, MANAGER, PRESIDENT
        20 ANALYST, ANALYST, CLERK, CLERK, MANAGER
        30 CLERK, MANAGER, SALESMAN, SALESMAN, SALESMAN, SALESMAN

SQL>
SQL> -- This won't work - DISTINCT can't be used in LISTAGG
SQL> select deptno, listagg(distinct job, ', ') within group (order by job) jobs
  2  from emp
  3  group by deptno;
select deptno, listagg(distinct job, ', ') within group (order by job) jobs
               *
ERROR at line 1:
ORA-30482: DISTINCT option not allowed for this function


SQL>
SQL> -- So - select distinct jobs first, then apply LISTAGG to it
SQL> select x.deptno, listagg(x.job, ', ') within group (order by x.job) jobs
  2  from (select distinct deptno, job
  3        from emp) x
  4  group by x.deptno;

    DEPTNO JOBS
---------- ------------------------------------------------------------
        10 CLERK, MANAGER, PRESIDENT
        20 ANALYST, CLERK, MANAGER
        30 CLERK, MANAGER, SALESMAN

SQL>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle जॉइन करता है - पारंपरिक सिंटैक्स VS ANSI सिंटैक्स के बीच तुलना

  2. Oracle डेटाबेस किस परिस्थिति में डेटाटाइम कॉलम मानों के अमान्य समय भाग की अनुमति देता है?

  3. देखने के लिए SQL ट्रिगर

  4. ऑरैकल डेटाबेस में BigInteger मानों को कैसे स्टोर करें?

  5. कॉल संग्रहीत प्रक्रिया जिसमें अजगर में कॉलप्रोक का उपयोग करके रिकॉर्ड का संग्रह होता है