SQL 按但重复新月形数字排序

SQL order by but repeat crescent numbers

我正在使用 SQL Server 2014,但我遇到了查询问题。
我有以下场景:

| Number | Series |  Name   |
|--------|--------|---------|
|   9    |   1    | Name 1  |
|   5    |   3    | Name 2  |
|   8    |   2    | Name 3  |
|   7    |   3    | Name 4  |
|   0    |   1    | Name 5  |
|   1    |   2    | Name 6  |
|   9    |   2    | Name 7  |
|   3    |   3    | Name 8  |
|   4    |   1    | Name 9  |
|   0    |   1    | Name 10 |

我需要像这样按系列列排序:

| Number | Series | Name    |  
|--------|--------|---------|  
|   9    |   1    | Name 1  |  
|   8    |   2    | Name 3  |  
|   5    |   3    | Name 2  |  
|   7    |   1    | Name 5  |  
|   1    |   2    | Name 6  |  
|   0    |   3    | Name 4  |  
|   4    |   1    | Name 9  |  
|   9    |   2    | Name 7  |  
|   3    |   3    | Name 8  |  
|   0    |   1    | Name 10 |

实际上 "series" 列中的序列比排序更重要。

1,2,3 又是 1,2,3...

有人可以帮助我吗?

您可以使用 ANSI 标准函数row_number():

select number, series, name
from (select t.*, row_number() over (partition by series order by number) as seqnum
      from t
     ) t
order by seqnum, series;

这会将“1”分配给每个系列的第一条记录,将“2”分配给第二条记录,依此类推。然后外层的 order by 把所有的 "1"s together, all the "2" 放在一起。这具有交错系列值的效果。