我使用的是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 ......有人可以帮助我吗?
答案 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”放在一起。这具有交错序列值的效果。