2017-07-14 60 views
1

我正在使用SQL Server 2014,並且遇到查詢問題。
我有這樣的情況下波紋管:SQL order by but repeat crescent numbers

| 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,3再1,2,3 ...

有人可以幫我嗎?

+0

您正在使用哪個DBMS? –

+1

對不起,我正在使用SQL Server 2014 –

回答

1

爲此,可以使用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」放在一起,全部「2」放在一起。這具有交織該系列值的效果。

+0

它不會在預期的訂單中給出結果。 –

+0

@P已登錄。 。 。它現在應該。我爲'by by'排錯了第二個鍵。 –

+0

它爲我工作,我只改變了分區條款orderby列「名稱」,我得到了預期的結果。 非常感謝! –