2012-09-21 5 views
2

D'accord, cela devrait être une question assez facile je pense, mais je n'ai pas encore réussi à le comprendre.SQL Tri dans un tri

J'ai une table intitulée Personnel. Le CEEPC du personnel est ci-dessous:

SQL> DESC Staff 
Name          Null? Type 
----------------------------------------- -------- ---------- 
SNO          NOT NULL CHAR(5) 
FNAME            VARCHAR2(3 
LNAME            VARCHAR2(3 
POSITION           VARCHAR2(1 
SEX            CHAR(1) 
DOB            DATE 
SALARY            NUMBER(9) 
BNO            CHAR(4) 

Voici la requête en cours J'utilise:

SELECT bNo, lName||' '||fName, position, salary 
FROM Staff 
WHERE bNo 'b009' 
OR bNo = 'b005' 
ORDER BY 
    case position 
     when 'Manager' then 1 
     when 'Secretary' then 2 
     when 'Supervisor' then 3 
     when 'Assistant' then 4 
    else 99 
end; 

Le problème que j'ai est que dans chaque groupe de position, je dois trier par lName ainsi. Tous les conseils seraient grandement appréciés. Merci d'avance.

Répondre

6

Ajoutez simplement lName comme deuxième colonne ORDER BY.

ORDER BY CASE position 
      WHEN 'Manager' THEN 1 
      WHEN 'Secretary' THEN 2 
      WHEN 'Supervisor' THEN 3 
      WHEN 'Assistant' THEN 4 
      ELSE 99 
      END, 
      lName; 
+0

Exceptionnel. C'était BEAUCOUP plus facile que je ne le pensais. Merci beaucoup pour l'aide. – jwebster