SQL顺序但重复新月号

时间:2017-07-14 15:19:30

标签: sql sql-order-by

我使用的是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 |

实际上更像是"系列"列而不是ordenation。

<1,2>再次1,2,3 ......

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您可以使用ANSI标准函数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; 执行此操作:

order by

这将为每个系列的第一个记录分配“1”,为第二个记录分配“2”,依此类推。然后外部{{1}}将所有“1”放在一起,所有“2”放在一起。这具有交错序列值的效果。