-2
votes

SQL: Sélectionnez le dernier prix de chaque produit?

je suis difficile avec un devoir ... J'ai besoin de choisir le dernier prix de l'unité par date!

Ceci est la façon dont je le fais: xxx

Qu'est-ce que je fais en ce moment donne à répéte de dû à thé

sql

2 commentaires

Je suis en train d'utiliser le groupe par ce que vous suggérez?


Pls. Ajoutez votre nom de base de données comme SQL Server, Oracle, MySQL, etc.


3 Réponses :


0
votes

Vous avez besoin d'une sous-requête pour trouver la date la plus récente pour chaque produit, puis vous devez correspondre à cette date et à cette date à la table principale pour trouver le prix unitaire qui va avec le produit et la date:

SELECT s.CodProduct, s.UnitPrice, s.Date
FROM Exemplo.dbo.sells s INNER JOIN
      (SELECT s2.CodProduct, MAX(s2.Date) As MaxDate
       FROM Exemplo.dbo.sells s2 GROUP BY s2.CodProduct) md ON
             s.CodProduct = md.CodProduct AND 
             s.Date = md.MaxDate


5 commentaires

S'ils ont 100 produits et qu'ils veulent le dernier prix pour chacun, c'est faux.


Nom de la colonne ambiguë 'CodProduct'.


J'ai édité la réponse pour éviter cette erreur de nom de colonne ambiguë. Les tables sont toujours explicitement spécifiées pour chaque colonne maintenant.


Je reçois toujours un Cod de Cod à répéter ... Je pense que cela devrait être facile mais avoir du mal


Assurez-vous de rafraîchir la page. Il ne montrait pas mes changements avant de le faire. La première ligne devrait dire "Sélectionnez S.CodProduct, S.Unitprice, S.Date".



0
votes

Je crois que vous avez besoin de quelque chose comme ça (pas exactement votre définition de table): xxx


0 commentaires

0
votes

Vous pouvez utiliser rang_number () dans une CTE sur "classer" tous les produits de sorte que la date la plus récente qu'un produit ait un prix unitaire avec un numéro de ligne de 1. Puis dans votre principal Sélectionnez Vous venez de filtrer où rn = 1 . Le code ressemblerait à quelque chose comme ceci: xxx


0 commentaires