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

所以我的预期结果是这样的:

  • 医院A
  • 医院B
  • 医院C
  • 疗养院甲
  • 等等

但是,此查询返回分为正确组但不按 HospitalShortName 字母顺序的列表。我理解为什么上面的查询不起作用,但我不知道从这里去哪里。非常感谢任何帮助。

4

1 回答 1

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 
于 2012-07-02T15:29:33.210 回答