日期:2014-05-17  浏览次数:20545 次

求一个sql排序语句
表是这样的
id  class   name
1    数学   张一
2    音乐   陈一
3    数学   旺旺
4    语文   地方
5    英语   流程
6    语文   地方
7    音乐   的我
8    数学   风格
9    语文   和你
10   语文   二位
...
...
...

class为课程
name为学生
学生比较多,那么会有一定概率出现连续2个以上的class是一样的,比如记录9和10
现在想实现的是一个排序避免这种连续的class情况,当然最理想的情况是按class字段group之后,依次显示

如class字段group之后,里面包含数学、音乐、语文、英语

效果图

id  class   name
1    数学   张一
2    音乐   陈一
4    语文   地方
5    英语   流程
3    数学   旺旺
7    音乐   的我
6    语文   地方
8    数学   风格
9    语文   和你
10   语文   二位
...
...
...

------解决方案--------------------
;with maco as
(
select ROW_NUMBER() over (partition by class order by name) as num, * from @t
)
select id,class,name from maco order by num,name


这样也可以