Combine order by clause with case statement : Order By « Query Select « Oracle PL/SQL Tutorial






SQL>
SQL>
SQL> create table employees(
  2    empno      NUMBER(4)
  3  , ename      VARCHAR2(8)
  4  , init       VARCHAR2(5)
  5  , job        VARCHAR2(8)
  6  , mgr        NUMBER(4)
  7  , bdate      DATE
  8  , msal       NUMBER(6,2)
  9  , comm       NUMBER(6,2)
 10  , deptno     NUMBER(2) ) ;

Table created.

SQL>
SQL>
SQL> insert into employees values(1,'Jason',  'N',  'TRAINER', 2,   date '1965-12-18',  800 , NULL,  10);

1 row created.

SQL> insert into employees values(2,'Jerry',  'J',  'SALESREP',3,   date '1966-11-19',  1600, 300,   10);

1 row created.

SQL> insert into employees values(3,'Jord',   'T' , 'SALESREP',4,   date '1967-10-21',  1700, 500,   20);

1 row created.

SQL> insert into employees values(4,'Mary',   'J',  'MANAGER', 5,   date '1968-09-22',  1800, NULL,  20);

1 row created.

SQL> insert into employees values(5,'Joe',    'P',  'SALESREP',6,   date '1969-08-23',  1900, 1400,  30);

1 row created.

SQL> insert into employees values(6,'Black',  'R',  'MANAGER', 7,   date '1970-07-24',  2000, NULL,  30);

1 row created.

SQL> insert into employees values(7,'Red',    'A',  'MANAGER', 8,   date '1971-06-25',  2100, NULL,  40);

1 row created.

SQL> insert into employees values(8,'White',  'S',  'TRAINER', 9,   date '1972-05-26',  2200, NULL,  40);

1 row created.

SQL> insert into employees values(9,'Yellow', 'C',  'DIRECTOR',10,  date '1973-04-27',  2300, NULL,  20);

1 row created.

SQL> insert into employees values(10,'Pink',  'J',  'SALESREP',null,date '1974-03-28',  2400, 0,     30);

1 row created.

SQL>
SQL>
SQL> select job, ename
  2  ,      case
  3           when msal <= 2500
  4           then 'cheap'
  5           else 'expensive'
  6         end         as class
  7  from   employees
  8  where  bdate < date '1964-01-01'
  9  order  by case job
 10            when 'DIRECTOR' then 1
 11            when 'MANAGER'  then 2
 12                            else 3
 13            end;

no rows selected

SQL>
SQL> drop table employees;

Table dropped.








2.4.Order By
2.4.1.Sorting Rows Using the ORDER BY Clause
2.4.2.Sort last name ascending
2.4.3.Sort last name descending
2.4.4.Sort one column ascending and another column descending
2.4.5.Sort by index ascending and descending
2.4.6.Reference alias name in order by clause
2.4.7.Order by a calculated column
2.4.8.Sort the rows by descending order with DESC appended to order by clause
2.4.9.Sort two columns with different ordering
2.4.10.Use a column position number in the ORDER BY clause
2.4.11.A SELECT with Ordering
2.4.12.Order the table on the employee's original salary (orig_salary)
2.4.13.Order by two columns
2.4.14.Add aggregate function in order by clause
2.4.15.Order by username
2.4.16.Combine order by clause with case statement
2.4.17.Order Your Email