당신은 rank
창 기능을 top 1 with ties
를 사용할 수 있습니다 해당 제품의 주문 최대 수량 여러 고객이있는 경우
select top 1 with ties OD.ProductID,
OD.Quantity,
O.CustomerID
from dbo.[Order Details] OD
inner join dbo.Orders O on OD.OrderID = O.OrderID
order by rank() over (
partition by OD.ProductID order by OD.Quantity desc
);
은 위의 productId에 당 여러 행을 반환합니다.
당신은 단지 하나 개의 행을 얻고 싶은 경우에, 당신은 row_number
사용할 수 있습니다
select top 1 with ties OD.ProductID,
OD.Quantity,
O.CustomerID
from dbo.[Order Details] OD
inner join dbo.Orders O on OD.OrderID = O.OrderID
order by row_number() over (
partition by OD.ProductID order by OD.Quantity desc
);
또한 top
없이이 작업을 수행 할 수 있습니다
select *
from (
select OD.ProductID,
OD.Quantity,
O.CustomerID,
row_number() over (
partition by OD.ProductID order by OD.Quantity desc
) as rn
from dbo.[Order Details] OD
inner join dbo.Orders O on OD.OrderID = O.OrderID
) t
where rn = 1;
SQL 서버의 버전은 무엇? 이후 버전에서는 RANK()를 사용하여이 작업을 수행 할 수 있습니다. –
SQL Server 2014 –