1
  1. 桌子[Orders] : OrderID(Primary Key), CustomerID
  2. 桌子[Order Details] : OrderID(Primary Key), ProductID(Primary Key), Discount
  3. 桌子[Customers] : CustomerID[Primary Key]

使用这三个表,我想查询productID每个表的最高折扣CustomerID。我需要ProductID,CustomerID和的列Discount。我怎么解决这个问题?非常感谢各种帮助。

我尝试过以下脚本:

select ProductID, a.customerID, 
    (select MAX(discount) 
     from [Order Details] 
     where a.CustomerID=c.customerID
    )
from Orders a 
    join [Order Details]
        on a.OrderID=[Order Details].OrderID 
    join Customers c
        on a.CustomerID=c.CustomerID    
order by customerID
4

1 回答 1

0

以下查询将为您返回每个客户的最大折扣 productid。请注意,如果对于特定客户,您有多个产品可能有最大折扣,我想退回它们,那么您需要替换ROW_NUMBER()DENSE_RANK()

  WITH CTE AS 
    (SELECT ProductID, 
           o.CustomerID,
           Discount,
           ROW_NUMBER() OVER(PARTITION BY o.CustomerID ORDER BY Discount DESC) Row_num
    FROM [Order Details] od INNER JOIN Orders o
         ON od.OrderID= o.OrderID
    )
    SELECT ProductID, 
           CustomerID,
         Discount
    FROM CTE
    WHERE Row_num = 1
于 2015-05-24T19:51:43.990 回答