Группировка с выбором n наибольших в каждой группе
Версия 1.9 от Alexandr Fokin на 2023/09/11 02:45
DECLARE @n int = 3
SELECT *
FROM ShopOrder so1
WHERE
so1.OrderId in
(
SELECT top(@n) OrderId
FROM ShopOrder so2
WHERE so2.ClientId = so1.ClientId
ORDER BY so2.OrderBy
)
SELECT *
FROM ShopOrder so1
WHERE
so1.OrderId in
(
SELECT top(@n) OrderId
FROM ShopOrder so2
WHERE so2.ClientId = so1.ClientId
ORDER BY so2.OrderBy
)
Коррелирующие подзапросы
http://www.sql-tutorial.ru/ru/book_correlated_subqueries.html
Как получить N строк для каждой группы в SQL
https://oxilor.ru/blog/kak-poluchit-n-strok-dlya-kazhdoi-gruppy-v-sql