Bonjour,
Je travail en utilisant SQL Server 2008 R2 et j'ai un petit problème (précis) de requête, j'en appel donc à votre aide.
Je présente le tableau complet :
-> Une table de status de différents outils, une ligne par outil, et disons statuts = OK ou KO plus une durée
OUTIL --- STATUT ---- DUREE
Outil1 --- OK --- 20
Outil2 --- OK --- 30
-> Une deuxième table qui contient l'historique des statuts... Dès qu'un statuts change, l'ancien est enregistré là
OUTIL --- STATUT ---- DUREE
Outil1 --- OK --- 5
Outil1 --- OK --- 10
Outil1 --- KO --- 30
Outil1 --- OK --- 50
Ce que je veux faire :
Pour chaque outil, je veux récupérer la durée actuel du statut ET lui additionner les dernières durées qui ont le même statut.
En gros, répondre à la question : "Depuis combien de temps es-tu OK ou KO ?"
Dans l'exemple, pour l'outil1, je voudrai que le calcule soit : 20 (en cours) + 5 + 10 = 35
(On ne prends pas les 50, puisque entre temps, il y a eu un statut différent)
Ce que je prévoyais de faire :
Je pense donc partir de ma première table, une ligne par outil parfait.
Puis je pourrai faire une jointure sur la deuxième, utilisant l'outil comme jointure... Et le statut.
Mais ça ne va pas... Si je fais ça il va récupérer toutes les lignes d'un même statut.
Donc je me demande comment ne récupérer que les toutes premières lignes qui ont le même statut, et pas celles antérieur à dernier changement de statut ?
De manière plus large... Je ne sais même pas dans une simple requête comment récupérer les n premières lignes qui partagent une même valeur.... ou par une procédure stockée éventuellement, mais je préférerai éviter si possible.
Si quelqu'un a une idée, je suis preneur.
Merci d'avance
PS : J'ai dans ces tables une colonne date, sur laquelle on pourrait s'appuyer....
Partager