Sto cercando di capire come restituire i primi 10 record per ogni gruppo di Trans.TranSID.t-SQL per trovare i primi 10 record per ogni gruppo
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
posso aggiungere "TOP 10" per l'istruzione select, ma che mi dà i primi 10 account indipendentemente dal gruppo. Ci sono 25 gruppi di Trans.TranSID e sto cercando di ottenere i primi 10 solo per ogni gruppo.
L'inclusione di una struttura di tabella di base e dell'output atteso consente di ottenere risposte. – jTC
Fondamentalmente vi è una tabella di conti cliente (Abook) e transazioni (Trans) e dettagli di transazione (TransDetail) tabelle. Struttura molto semplice. Desidera semplicemente sommare le vendite per ciascun cliente e raggruppare i primi 10 risultati per TranSID (che è il luogo in cui è avvenuta la transazione). –