2014-06-14 64 views
0

我在sql server2008中有一個表「Category」。它有2列-ID,名稱。我已插入3名稱在它爲:如何自定義結果順序(即按字母順序排序的字符串)

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

我已經使用下面的查詢來顯示錶中的數據:

SELECT * FROM類別按名稱順序遞減

它被示出作爲結果:

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 

請幫我個人。

+0

什麼是邏輯/模式到所需的排序順序?或者這只是硬編碼的3?在這種情況下,添加一個顯示順序列並按順序排列。 –

+0

不,它可能是幾行,但以下三個應按照我所說的以指定的方式。 –

+0

那麼你可以擴展你的例子來顯示其他行然後它們適合於所需的排序嗎? –

回答

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
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

看起來您正在嘗試執行自定義排序,在這種情況下,您可以添加第三列,例如SortID int,然後通過排序ID排序結果集。例如

SELECT ID, Name 
FROM TableName 
ORDER BY SortID