1
У меня есть таблицапочему крест применять дает все строки и не топ N
name score samar 12 pradeep 30 garry 90
Я хочу, чтобы получить верхние 2 баллов из приведенной выше таблицы. Это можно сделать с помощью функции row_number()
. Но он также должен работать с перекрестным применением. Но мой нижеприведенный код дает все строки вместо второго балла.
select abc.score
from #b as a
cross apply (
select top 2 score
from #b as
where b.name = a.name
order by b.score desc
) as abc
Не могли бы вы рассказать мне, что не так в приведенном выше коде.
Вы запрашиваете верхние два счета за каждое 'имя'. Если у вас есть один балл за имя, это возвращает всю таблицу. Из вашего описания непонятно, почему 'select top (2) name, оценка от #b по счету desc' не работает для вас. – GSerg
Хорошо спасибо .. Я хочу рассчитать сумму первых двух имен, которые являются samar и praddep, а затем получить проценты. Таким образом, результат должен быть 12/42 и 30/42. Игнорирование третьей строки – sam
Является ли ответ только row_number()? – sam