一个简单的分类排序问题
假如有这个表
姓名 月份 业绩
张三 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 表
--結果
/*
姓名 月份 业绩 月排名
张三 1 10 1
李四 1 8 2
王五 1 1 3
张三 2 7 1
王五 2 3 2
李四 2 0 3
李四 3 9 1
王五 3 5 2 <