日期:2014-05-19  浏览次数:20476 次

关于group的一个复杂用法,请教各位大侠
我有一个分数日志表,结构如下:
自动增长ID,人物ID,人物处的单位类别,分数,时间
我按照单位类别取出每个单位中分数总和各前十名,应该如何做,谢谢.


------解决方案--------------------
select T.* from 分数日志表 T
where T.自动增长ID in(select top 10 自动增长ID from 分数日志表 where 单位类别=T.单位类别 order by 分数 DESC)
------解决方案--------------------
表名: ta (自动增长ID,人物ID,人物处的单位类别,分数,时间)
select *
from
(
select 人物ID,人物处的单位类别,分数 from ta a
where id in(select top 10 from ta where 人物处的单位类别=a.人物处的单位类别 order by 分数)
union all
select [人物ID]= '合计 ',人物处的单位类别,[分数]=sum(分数) from ta a group by 人物处的单位类别)t

order by 人物处的单位类别,cast when 人物ID= '合计 ' then 1 else 0 end asc