2012-07-02 60 views
0

我想寫一個查詢,將表結果分爲3個部分,我希望每個部分按字母順序排列完成。這是我寫的查詢:排序後的字母結果按排序

SELECT * FROM 
(SELECT TOP 100 PERCENT * FROM Hospital WHERE Status = 1 Order By HospitalShortName) 
As Result Order BY CASE HospitalType 
WHEN 'HOS' THEN 1 WHEN 'NH' THEN 2 ELSE 3 END 

所以我的預期結果會是這樣的:

  • 醫院
  • B醫院
  • C醫院
  • NursingHome一個
  • 等等

但是,此查詢返回拆分爲正確組但不按HospitalShortName字母順序排列的列表。我明白爲什麼上述查詢不起作用,但我失去了從這裏開始的地方。任何幫助非常感謝。

+0

_「我明白爲什麼上述查詢不起作用」_出於好奇,爲什麼? –

+0

我知道子查詢成功地進行了alphabetizing,但是一旦它被HospitalType重新排序,它就會被丟棄。 – user1211860

回答

4

不需要子查詢。只需將第二列添加到外部ORDER BY子句中即可。

SELECT * 
    FROM Hospital 
    WHERE Status = 1 
    ORDER BY CASE HospitalType 
       WHEN 'HOS' THEN 1 
       WHEN 'NH' THEN 2 
       ELSE 3 
       END, 
       HospitalShortName 
+0

此外,不僅沒有必要,也不保證在通過外部查詢傳遞時,子查詢中的排序將保持任何意義。 – MatBailie

+0

謝謝你,我不知道你可以在爲Order By使用CASE參數後做到這一點。完美的作品。 – user1211860

+0

我的英雄。 *完全*我在找什麼。 –