bonjour,
Je dois trouver la différence de temps entre le moment ou un ticket est mis en Suspended (1 ligne) et le moment ou il change d'état (autre ligne) et quitte le statut de suspended
j'ai une view comme ceci :

Newvalue oldvalue incidentnumber Date
Suspended Open 194094 6/04/2012 9:12
Solved Suspended 195932 6/01/2012 9:26
Suspended Open 197688 15/06/2012 9:35
Solved Suspended 197688 18/06/2012 3:21
Open Suspended 184952 6/04/2012 8:46
Suspended Open 196449 6/04/2012 11:12
Solved Suspended 196449 6/04/2012 13:57
Suspended Open 197529 6/11/2012 16:51
Open Suspended 197529 6/12/2012 6:50
Suspended Open 197529 6/12/2012 16:57
Solved Suspended 197529 13/06/2012 11:26

Comment m'y prendre ? Sachant que le critère commun pour trouver l'ouverture du statut et sa fermeture est IncidentNumber, qu'il peut y avoir plusieurs ouvertures et fermetures sur un même ticket (Incidentnumber).
J'ai commencé une query, dans laquelle je n'ai pas encore calculé la différence de temps, mais simplement pour trouver la ligne correspondant à la fermeture du Statut par rapport à IncidentNumber. suis-je dans la bonne direction ou non ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
------------------- 
Sous SQL Server 2008 
------------------- 
DECLARE @IncidentNumber INT, @CreatedDate DATETIME, @CloseDate DATETIME; 
 
--SET @LastDateChange = GETDATE() 
 
DECLARE myCursor CURSOR FOR 
 
SELECT IncidentNumber, CreatedDateTime 
FROM dbo.v_Sel_Suspended 
WHERE NewFieldValue = 'Suspended' 
 
OPEN myCursor 
FETCH NEXT FROM myCursor 
INTO @IncidentNumber, @CreatedDate 
 
WHILE @@FETCH_STATUS = 0 
BEGIN 
 
SET @CloseDate = (SELECT Min(CreatedDateTime) FROM dbo.v_Sel_Suspended WHERE OldFieldValue = 'Suspended'
 AND IncidentNumber = @IncidentNumber AND CreatedDateTime> @CreatedDate) 
 
FETCH NEXT FROM myCursor 
INTO @IncidentNumber, @CreatedDate 
 
END 
CLOSE myCursor 
DEALLOCATE myCursor
Bien sur ce n'est qu'une ébauche. L'idée étant ensuite de calculer le nombre d'H de différence entre la createdDateTime et la variable @ClosedDate, et de mettre ensuite IncidentNumber et le nbre d'heure dans une table (en tenant compte de l'incrémebtation du nbre d'heures si le ticket revient plusieurs fois en statut Suspended) et aussi quand il y a seulement ouverture et non fermeture (pour l'instant mon query retourne une ligne vide quand il n'y a pas de fermeture)

Merci pour votre aide : Il y a probablement un moyen plus simple, mais je ne suis pas d'un niveau hyper avancé en SQL
AngelJo