读书人

一个简单的分类排序有关问题

发布时间: 2012-02-19 19:43:37 作者: rapoo

一个简单的分类排序问题
假如有这个表

姓名 月份 业绩
张三 1 10
张三 2 7
张三 3 4
李四 1 8
李四 2 0
李四 3 9
王五 1 1
王五 2 3
王五 3 5

我要得到这么一个结果,即显示出个人的月业绩排名

姓名 月份 业绩 月排名
张三 1 10 1
李四 1 8 2
王五 1 1 3
张三 2 7 1
李四 2 0 3
王五 2 3 2
张三 3 4 3
李四 3 9 1
王五 3 5 2

SQL语句应该怎么写

[解决办法]
select *,(select count(*) from 表 where 月份=a.月份 and 业绩> =a.业绩) as 月排名
from 表 a

[解决办法]
--建境
Create Table 表
(姓名 Nvarchar(10),
月份 Int,
业绩 Int)
Insert 表 Select N '张三 ', 1, 10
Union All Select N '张三 ', 2, 7
Union All Select N '张三 ', 3, 4
Union All Select N '李四 ', 1, 8
Union All Select N '李四 ', 2, 0
Union All Select N '李四 ', 3, 9
Union All Select N '王五 ', 1, 1
Union All Select N '王五 ', 2, 3
Union All Select N '王五 ', 3, 5
GO
--
Select
*,
(Select Count(姓名) From 表 Where 月份 = A.月份 And 业绩 > = A.业绩) As 月排名
From
表 A
Order By
月份, 月排名
GO
--除境
Drop Table 表
--果
/*
姓名月份业绩月排名
张三1101
李四182
王五113
张三271
王五232
李四203
李四391
王五352
张三343
*/

读书人网 >SQL Server

热点推荐