如何自定义结果的排序(即字符串的字母顺序以外的其他内容)

时间:2014-06-14 09:42:43

标签: sql-server

我在sql server2008中有一个表“Category”。它有2列-ID,Name。我在其中插入了3个名称:

1.Case Report
2.Original Article
3.Letter to Author
4.Submmited Article

我使用以下查询来显示表格数据:

按名称desc

从类别顺序中选择*

显示结果为:

4.Submmited Article
2.Original Article
3.Letter to Author
1.Case Report

但我希望将表值显示为:

2.Original Article
1.Case Report
3.Letter to Author
4.Submmited Article
请帮助我。

3 个答案:

答案 0 :(得分:2)

SELECT *
FROM Category
ORDER BY CASE 
             WHEN NAME = 'Original Article' THEN 1
             WHEN NAME = 'Case Report'      THEN 2
             WHEN NAME = 'Letter to Author' THEN 3
         END ASC

答案 1 :(得分:1)

鉴于您不想使用字母排序,我建议添加另一列来执行排序。例如,创建一个这样的表:

CREATE TABLE MY_TABLE (
  ID int PRIMARY KEY,
  NAME varchar(50),
  SORT_ORDER int
)

您将填充SORT_ORDER列数据以匹配您需要的顺序,然后可以使用以下内容获取排序数据:

SELECT * FROM MY_TABLE ORDER BY SORT_ORDER

希望有所帮助。

答案 2 :(得分:1)

看起来您正在尝试进行自定义排序,在这种情况下,您可以添加第三列,例如SortID int,然后按SortID对结果集进行排序。例如

SELECT ID, Name
FROM TableName
ORDER BY SortID