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" 放在一起。这具有交错系列值的效果。
我正在使用 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" 放在一起。这具有交错系列值的效果。