2012-09-21 62 views
2

好的,這應該是一個相當簡單的問題,但我還沒有弄清楚。SQL排序內排序

我有一張標題爲「工作人員」的表格。工作人員DESC低於:

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) 

這裏是我使用的當前查詢:

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; 

我遇到的問題是,每個位置組內,我需要通過LNAME以及排序。任何提示將非常感謝。提前致謝。

回答

6

只需添加lName作爲第二個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

傑出。這比我想象的要容易得多。非常感謝你的幫助。 – jwebster