Я пытаюсь выяснить, как вернуть 10 лучших записей для каждой группы Trans.TranSID.t-SQL, чтобы найти 10 лучших записей для каждой группы
SELECT a.ABID, a.ABName, t.TranSID, SUM(IIF(TranTypeID = 'CO', td.Qty * CAST(td.Price AS money) * - 1,
td.Qty * CAST(td.Price AS money))) AS TotalSales
FROM Trans t INNER JOIN
TransDetail td ON t.TranID = td.TranID INNER JOIN
ABook a ON t.TranABID = a.ABID
WHERE (t.TranDate BETWEEN CONVERT(DATETIME, '2012-01-01 00:00:00', 102) AND CONVERT(DATETIME, '2013-01-01 00:00:00', 102)) AND
t.TranTypeID in ('SO','CA','CO') AND (t.TranStatus <> 'V')
GROUP BY a.ABID, a.ABName, t.TranSID
HAVING (NOT (a.ABName LIKE '%cash%'))
ORDER BY t.TranSID, TotalSales Desc
Я могу добавить «TOP 10» в оператор выбора, но это дает мне первые 10 счетов независимо от группы. Есть 25 групп Trans.TranSID, и я пытаюсь получить 10 лучших только для каждой группы.
Включение базовой структуры таблицы и ожидаемого результата поможет получить ответы. – jTC
В основном таблицы таблиц счетов (Abook) и транзакции (Trans) и транзакции (TransDetail). Очень простая структура. Просто хочу суммировать продажи для каждого клиента и группировать 10 лучших результатов для TranSID (который является местом нахождения транзакции). –