2016-02-23 93 views
0

我需要創建存儲過程以從表中獲取所有文檔標題,但必須以顯示文檔章節的方式進行排序。我真的不知道如何自己做這個。如何通過文檔章節訂購​​

它必須訂購這樣的:

ID Chapter  Description 
1  0001-0299 Title 
2  0001-0019 Title 
3  0001   "some text" 
4  0002   "some text" 
. 
. 
.  0021-0039 Title 
.  0021   "some text" 
.  0022   "some text" 

我想你明白了吧。任何人都可以幫忙的機會? Thx尋求幫助。

+0

您是說你不知道如何使用ORDER BY或SELECT? –

+0

我在說我不知道​​如何寫出合適的ORDER BY。到目前爲止,我使用的是按ID排序,但如果有人決定刪除一行,則會出現問題。 – user3343010

+0

您正在使用哪些DBMS? –

回答

1

也許你想要這個。如果您需要將前兩個值設置爲「其他」順序,那麼:

select id, chapter, description 
from t 
order by left(chapter, 4), 
     (case when chapter like '%-%' then 1 else 2 end), 
     (case when chapter like '%-%' then chapter end) desc, 
     chapter asc; 
+0

第二種情況正是我正在尋找,像魔術般的作品。謝謝你這麼多戈登! :) – user3343010

0

這將按ID排序,然後按章節排序。通過本章的前四個字符

select id, chapter, description 
from t 
order by left(chapter, 4), 
     (case when chapter like '%-%' then 1 else 2 end), 
     chapter; 

此訂單,然後用連字符的章節,最後由章本身:

IF OBJECT_ID ('orderedDocuments', 'P') IS NOT NULL 
    DROP PROCEDURE orderedDocuments; 
GO 
CREATE PROCEDURE orderedDocuments 
AS 
    SELECT 
     ID, Chapter, Description 
    FROM 
     [Table Name] 
    ORDER BY 
     ID DESC 
     ,Chapter DESC 
GO 
+0

恐怕我不是在尋找這個,但thx很多爲你的時間和精力:) – user3343010