首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-02-19 
一个简单的分类排序问题假如有这个表姓名月份业绩张三110张三27张三34李四18李四20李四39王五11王五23王五

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

姓名       月份         业绩  
张三         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
*/

热点排行