Monday, December 9, 2019

How to get unique records without using distinct in oracle

nSQL> set lines 100
SQL> set pages 50
SQL> drop table employee;

Table dropped.

SQL> create table employee(empno number,ename varchar2(10));

Table created.

SQL> insert into employee values (1,'raj');

1 row created.

SQL> insert into employee values (1,'raj');

1 row created.

SQL> insert into employee values (2,'siva');

1 row created.

SQL> insert into employee values (3,'pavan');

1 row created.

SQL> insert into employee values (3,'pavan');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from employee;

     EMPNO ENAME
---------- ----------
         1 raj
         1 raj
         2 siva
         3 pavan
         3 pavan

Using DISTINCT:

SQL> select distinct empno,ename from employee order by 1,2;

     EMPNO ENAME
---------- ----------
         1 raj
         2 siva
         3 pavan

Without using DISTINCT:

SQL> select unique empno,ename from employee order by 1,2;

     EMPNO ENAME
---------- ----------
         1 raj
         2 siva
         3 pavan

SQL> select empno,ename from employee group by empno,ename order by 1,2;

     EMPNO ENAME
---------- ----------
         1 raj
         2 siva
         3 pavan

SQL> select empno,ename from employee
  2  union
  3  select empno,ename from employee;

     EMPNO ENAME
---------- ----------
         1 raj
         2 siva
         3 pavan

SQL> select empno,ename from employee
  2  union
  3  select null,null from employee where 1=2;

     EMPNO ENAME
---------- ----------
         1 raj
         2 siva
         3 pavan

SQL> select empno,ename from employee
  2  minus
  3  select null,null from employee where 1=2;

     EMPNO ENAME
---------- ----------
         1 raj
         2 siva
         3 pavan

SQL> select empno,ename from
  2  (
  3  select empno,ename,
  4  row_number() over(partition by empno,ename order by empno,ename) as rn from employee
  5  )
  6  where rn=1;

     EMPNO ENAME
---------- ----------
         1 raj
         2 siva
         3 pavan

SQL> select empno,ename from
  2  (
  3  select empno,ename,
  4  rank() over(partition by empno,ename order by rownum) as rn from employee
  5  )
  6  where rn=1;

     EMPNO ENAME
---------- ----------
         1 raj
         2 siva
         3 pavan

SQL>
SQL> select empno,ename from
  2  (
  3  select empno,ename,
  4  dense_rank() over(partition by empno,ename order by rownum) as rn from employee
  5  )
  6  where rn=1;

     EMPNO ENAME
---------- ----------
         1 raj
         2 siva
         3 pavan

SQL>

No comments:

Post a Comment

Delete Row Button to all records of Interactive Report in Oracle Apex

 1. add 'Delete' Del column to Report Query 2. Set the Following Properties for the DEL Column Type: Link Heading: Delete Targ...