Отличительные записи при объединении с таблицей в SQL Server - PullRequest
0 голосов
/ 11 сентября 2009

Как я могу получить топ 1 запись для каждого продукта из запроса ниже?

  SELECT DISTINCT o.product, o.orderID, od.qty, od.amount FROM
  orders o, orderdetails od WHERE o.orderID=od.orderID


Product  OrderID   Qty   Amount
Pen       11222    10     100.00
Pen       11223     5      50.00
Pen       11224     1      10.00
Book      22222     1      12.00
Book      2223      5      10.00
Scale     1111      2       9.00
Scale     2222      1       2.00  

Ответы [ 3 ]

1 голос
/ 11 сентября 2009
SELECT 
    o.Product, MAX(od.QTy) 
FROM 
    orders o
    INNER JOIN orderdetails od ON o.orderID=od.orderID
GROUP BY o.Product

или

SELECT 
    o.Product, MAX(od.Amount) 
FROM 
    orders o
    INNER JOIN orderdetails od ON o.orderID=od.orderID
GROUP BY o.Product

в зависимости от того, что вы считаете «топовым» продуктом.

0 голосов
/ 11 сентября 2009

Дайте этому шанс ...

Select o.product, o.orderID, od.qty, od.amount 
from orders o, orderdetails od 
where o.orderID = od.orderID
   and o.orderID in (Select Min(o.orderId) 
                     From orders o
                     Group By o.product)
0 голосов
/ 11 сентября 2009

Топ на основе чего? Самое количество? если это так, попробуйте это

  Select * From Orders O
  Where OrderId = 
     (Select Max(orderId) From Orders
      Where product = P.product
        And Qty = (Select Max(Qty) 
                   From orders 
                   Where Product = O.Product))

В противном случае, если Top означает что-то еще, измените последние три строки, чтобы найти Orderid для записи, которая удовлетворяет какому-либо определению «Top»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...