如何从每组中选择前3个最高值



我有一个分数表,学生的测验分数和作业分数是按以下方式输入的

Assignment1Assignment3tbody> <<tr>245
StudentID Quiz1 Quiz2 Quiz3 Quiz5Assignment2Assignment4Assignment5Assignment5Assignment5132110841973985
32161063847186
332179284107583
32172648369105
32134571057839

一种方法是使用CROSS APPLY取消pivot和求和标记

SELECT StudentID, CourseID, qm.m, am.m
FROM Marks 
cross apply (
select sum (q) m
from (
select top(3) q
from (
values
(Quiz1),(Quiz2),(Quiz3),(Quiz4),(Quiz5)
) t(q)
order by q desc
) tq
) qm
cross apply (
select sum (q) m
from (
select top(3) q
from (
values
(Assignment1),(Assignment2),(Assignment3),(Assignment4),(Assignment5)
) t(q)
order by q desc
) tq
) am

最新更新