Bonjour,
Je travaille actuellement sous sql server 2008 R2.
J'ai une requête que je n'arrive pas à faire, elle doit pourtant être simple mais je me casse la tête dessus.
J'ai une table avec des ordres de fabrication divisés en opération.
Chaque opération a une date et une heure différentes des autres.
Ordre
de fabrication||||---------Date----------||||Heure||||||Numéros d'Opération
OFS-0000864||||2013-09-25 00:00:00.000||||00000|||||| 60
OFS-0000864||||2013-09-26 00:00:00.000||||83549||||||80
OFS-0000864||||2013-09-27 00:00:00.000||||83986||||||100
OFS-0001000||||2013-09-26 00:00:00.000||||53039||||||30
OFS-0001084||||2013-09-25 00:00:00.000||||55368||||||10
OFS-0001084||||2013-09-30 00:00:00.000||||55438||||||30
OFS-0001085||||2013-09-25 00:00:00.000||||55579||||||10
Je veux récupéré la valeur max des numéros d'opération pour chaque OF :
Exemple : pour l'OF 864 j'aurai uniquement cette ligne :
OFS-0000864 2013-09-27 00:00:00.000 83986 100
Avec la requête suivante je garde toujours plusieurs tuples par OF puisque le Group by s'applique sur un ensemble de 3 champs ce qui est logique..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select prodid,REALIZEDENDDATE,REALIZEDENDTIME,max(oprnum) from Latable where DATAAREAID ='lolo' group by prodid,REALIZEDENDDATE,REALIZEDENDTIME;
j'ai testé plusieurs solutions mais je sèche ...
La solution ultime serait :
Mais c'est une mauvaise utilisation de group by car il n'englobe pas tous les champs et forcément le SGBD hurle ^^
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select prodid,REALIZEDENDDATE,REALIZEDENDTIME,max(oprnum) from Latable where DATAAREAID ='lolo' group by prodid;
Avez-vous une solution?
Merci.
Partager