假如有这个表姓名 月份 业绩
张三 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语句应该怎么写
张三 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 Count(姓名) From 表 Where 月份 = A.月份 And 业绩 >= A.业绩) As 月排名
From
表 A
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
张三 3 4 3
*/
INSERT @T
SELECT '张三',1,10
UNION ALL SELECT '张三',2,7
UNION ALL SELECT'张三',3,4
UNION ALL SELECT'李四',1,8
UNION ALL SELECT'李四',2,0
UNION ALL SELECT'李四',3,9
UNION ALL SELECT'王五',1,1
UNION ALL SELECT'王五',2,3
UNION ALL SELECT'王五',3,5select *,(select count(*) from @T where 月份=a.月份 and 业绩>=a.业绩) as 月排名
from @T a
ORDER BY 月份