J'ai une table qui enregistre les mises à jour de l'inventaire tout au long de la journée.Obtenir le dernier enregistrement pour chaque date d'une table
Tableau InventoryHistory:
UpdateID INT IDENTITY
ProductID INT
UpdateDateTime DATETIME
QuantityOnHand INT
records exemples:
1, 1, '7/29/2009 9:00', 100
2, 1, '7/29/2009 14:00', 99
3, 1, '7/29/2009 20:00', 98
4, 1, '7/30/2009 9:00', 97
Pour un ProductID donné, je dois obtenir une ligne renvoyée pour chaque jour pendant les 30 derniers jours qui a la dernière mise à jour avant 17h pour ce jour donné.
Ainsi, les résultats pour ProductID = 1 doivent être:
2, 1, '7/29/2009 14:00', 99
4, 1, '7/30/2009 9:00', 97
J'ai essayé la construction d'une table temporaire avec les 30 derniers jours, puis une sous-requête contre, mais que je suis courir en cercles pendant des heures, et j'essaie de trouver une solution élégante (sans utiliser les curseurs).
Aide!
fonctionne très bien, à condition que l'OP est sur SQL Server 2005 et jusqu'à - ne fonctionnera pas dans SQL Server 2000 :-( –
sûr - mais compte tenu de l'ancienneté de SQL 2000, il faut préciser qu'ils sont en cours d'exécution sur une ancienne version en posant une question;) –
Cela a fonctionné parfaitement! (Et je suis sur SQL 2008, c'est pourquoi je n'ai pas pris la peine de le mentionner). Merci beaucoup pour votre aide! – khutch