J'essaie d'écrire une requête SQL pour DB2 version 8 qui récupère l'ordre le plus récent d'une partie spécifique pour une liste d'utilisateurs. La requête reçoit un paramètre qui contient une liste de numéros customerId et le numéro partId. Par exemple,Recherche de la commande la plus récente pour un article particulier
Commander Tableau
OrderID
PartID
CustomerID
OrderTime
Je voulais d'abord essayer:
Select * from Order
where
OrderId = (
Select orderId
from Order
where
partId = #requestedPartId# and customerId = #customerId#
Order by orderTime desc
fetch first 1 rows only
);
Le problème avec la requête ci-dessus est qu'il ne fonctionne que pour un seul utilisateur et mes besoins de la requête pour inclure plusieurs utilisateurs.
Quelqu'un at-il une suggestion sur la façon dont je pourrais développer la requête ci-dessus pour travailler pour plusieurs utilisateurs? Si je supprime mon "récupérer seulement les 1 premières lignes", alors il retournera toutes les lignes au lieu des plus récentes. J'ai également essayé d'utiliser Max (OrderTime), mais je ne pouvais pas trouver un moyen de retourner le OrderId de la sous-sélection.
Merci!
Remarque: DB2 version 8 ne prend pas en charge la fonction SQL "TOP".
Cela fonctionnera tant que deux commandes du même client ne sont pas placées exactement à la même milliseconde. Merci pour l'exemple. – visitor