--否则的话,就要用临时表
select 部门,序号=0,姓名 into #t from 表 order by 部门,姓名
declare @部门 varchar(10),@i int
update #t set @i=case @部门 when 部门 then @i+1 else 1 end
,序号=@i,@部门=部门
如果你的名字存在着相同的,那就不行了,那样需要唯一字段。
如victorycyz(中海,学SQL Server的菜鸟)说的。
或者有其他的唯一字段也可以。
select part,
(select count(*) from #t where part=a.part and id<=a.id) num,
name
from #t a order by part