一列上的 DISTINCT 并返回 TOP 行

Nea*_*eal 9 sql-server distinct top

你如何查询三个最大的唯一客户Purchase_Cost

我想应用DISTINCT唯一的 on Customer_Name,但下面的查询在所有三列上应用不同的。我应该如何修改查询以获得所需的输出?

SELECT DISTINCT TOP 3 customer_name, order_no, Purchase_Cost  
FROM PurchaseTable 
ORDER BY Purchase_Cost
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Sql*_*ide 9

在以下查询中替换您的 dbname 和 schemaName。

;WITH CTE AS 
(
SELECT  
       [Order_No]
      ,[Customer_Name]
      ,[Purchase_Cost]
     , ROW_NUMBER() OVER(PARTITION BY [customer Name] ORDER BY [Purchase Cost] DESC) AS "RowNumber"
  FROM [dbname].[schemaName].[PurchaseTable]
  )

  SELECT TOP(3)
       [Order_No]
      ,[Customer_Name]
      ,[Purchase_Cost]
  FROM CTE WHERE RowNumber=1
  ORDER BY [Purchase_Cost] DESC
Run Code Online (Sandbox Code Playgroud)

我相信还有其他方法可以做到这一点。我建议你读这个