SELECT [InvNo],[Model],[Amount]
FROM (SELECT [InvNo],[Model],[Amount],ROW_NUMBER() OVER(partition by [InvNo] ORDER BY [Amount] DESC) AS [Row Number]
FROM [InvoiceDetail]) A
WHERE [Row Number]<=10
FOR SQL SERVER 2005 以上版本。主要是row_number()函数,和分区OVER的使用。