我正在尝试编写一个查询,将要分解的表的结果排序为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
所以我的预期结果是这样的:
但是,此查询会将列表分为正确的组,但不会返回由HospitalShortName按字母顺序排列的列表。我理解为什么上面的查询不起作用,但我迷失了从这里去的地方。任何帮助非常感谢。
答案 0 :(得分: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