如何按文件章节订购

时间:2016-02-23 12:14:11

标签: sql sql-order-by

我需要创建存储过程以从表中获取所有文档标题,但是必须以显示文档章节的方式对其进行排序。我自己真的不知道怎么做。

必须这样订购:

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"

我认为你明白了。有人可以帮忙吗?感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

也许你打算这样做:

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

这个顺序由章节的前四个字符排序,然后由带有连字符的章节排序,最后由章节本身排序。如果您需要前两个值为“其他”顺序,则:

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;

答案 1 :(得分:0)

这将按ID排序,然后按章节排序。

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