按顺序排序,然后循环

时间:2016-05-04 10:56:07

标签: sql sql-server sql-server-2008-r2

我的数据是:

(右侧的唯一ID列)

1. aaa,         1
2. aaa,         2
3. aaa,         3
4. bbb,         4
5. bbb,         5
6. bbb,         6
7. ccc,         7
8. ccc,         8
9. ccc,         9
10. ddd,        10
11. ddd,        11
12. ddd,        12

我希望结果像

1. aaa
2. bbb
3. ccc
4. ddd
5. aaa
6. bbb
7. ccc
8. ddd
9. aaa
10. bbb
11. ccc
12. ddd

我可以欺骗和使用

Select distinct letters from table
UNION ALL
Select distinct letter from table

*重复每个不同的xxx值

等..以获得正确的结果,但依赖于我知道有多少不同的值。

我想我在这里错过了一些非常简单的事情!

1 个答案:

答案 0 :(得分:2)

大多数数据库都支持ANSI标准row_number()功能。这可以让你做你想做的事:

select t.*
from t
order by row_number() over (partition by name order by id),
         id;

这是隔行扫描的顺序。我不确定额外的4行来自哪里。问题的标题表明订购是您问题的基础。