2009-09-11 7 views
0

Comment puis-je obtenir l'enregistrement principal 1 pour chaque produit à partir de la requête ci-dessous?Enregistrements distincts associés à une table dans SQL Server

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 
+0

Que voulez-vous dire par le premier enregistrement? Voulez-vous une liste distincte de produits pour une commande? – Bob

+0

Je pense qu'il veut le «haut» de chaque produit. Je pense. –

+0

Vous avez raison George. Je veux le premier de chaque produit – acadia

Répondre

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

ou

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

en fonction de ce que vous considérez comme produit "top".

0

Haut basé sur quoi? La plupart des quantités? si oui essayez cette

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)) 

Sinon, si Top signifie quelque chose d'autre changement trois dernières lignes pour trouver ORDERID pour l'enregistrement qui répond à ce que cette définition de « Haut »

0

Donnez un coup ... ce

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) 
Questions connexes