ma même requête mais en faisant appraître OptionId dans le select
le même résultat que tu as trouvé, il te reste a sélectionné AdmId et l'optionID
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SELECT DISTINCT AdmID,T0.optID, (SELECT MIN("dateTime") FROM T AS T1 WHERE T1.AdmID = T0.AdmID AND T1.optID = T0.optID) AS DT_MIN, (SELECT MAX("dateTime") FROM T AS T2 WHERE T2.AdmID = T0.AdmID AND T2.optID = T0.optID) AS DT_MAX FROM T AS T0
avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Where AdmID= And OptionId=
1 | x |2009-10-10 08:03:23 | 2009-10-10 08:07:53 |
| 1 | y |2009-10-10 08:05:13 | 2009-10-10 08:08:33 |
| 1 | z |2009-10-10 08:09:13 | 2009-10-11 08:10:23 |
| 2 | x |2009-10-11 08:03:23 | 2009-10-11 08:07:53 |
| 2 | y |2009-10-11 08:05:13 | 2009-10-11 08:08:33 |
| 2 | z |2009-10-11 08:09:13 | 2009-10-11 08:10:23
Merci
Désolé je crois que je me fais mal comprendre.
Ce que je désire obtenir c'est les min et max des plages ou OptionID = x par exemple.
Par exemple début et fin d'un traitement monitoré..
pour :
J'ai deux plages :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 1, '2009.10.10 08:03:23', 'x'), ( 1, '2009.10.10 08:03:53', 'x'), ( 1, '2009.10.10 08:04:20', 'x'), ( 1, '2009.10.10 08:05:13', 'y'), ( 1, '2009.10.10 08:05:53', 'y'), ( 1, '2009.10.10 08:06:33', 'y'), ( 1, '2009.10.10 08:06:53', 'x'), ( 1, '2009.10.10 08:07:53', 'x'), (
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 plage 1 : 1, '2009.10.10 08:03:23', 'x'), 1, '2009.10.10 08:03:53', 'x'), 1, '2009.10.10 08:04:20', 'x'), et plage 2 : 1, '2009.10.10 08:06:53', 'x'), ( 1, '2009.10.10 08:07:53', 'x'), (
Donc je souhaite avoir le début et la fin de chaque plage i.e:
Je ne sais pas si c'est possible en sqL de faire cela ..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 debut fin 2009.10.10 08:03:23 2009.10.10 08:04:20 2009.10.10 08:06:53 2009.10.10 08:07:53
essais ceci
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 SELECT DISTINCT AdmID,T0.optID, (SELECT MIN(tadate) FROM T AS T1 WHERE T1.AdmID = T0.AdmID AND T1.optID = T0.optID And T1.tadate <=(Select Min(T3.tadate) From T AS T3 Where T1.AdmID = T0.AdmID AND T3.optID <> T1.optID ) )AS DT_MIN, (SELECT MAX(tadate) FROM T AS T2 WHERE T2.AdmID = T0.AdmID AND T2.optID = T0.optID And T1.tadate <=(Select Min(T3.tadate) From T AS T3 Where T1.AdmID = T0.AdmID AND T3.optID <> T1.optID ) ) AS DT_MAX FROM T AS T0
merci
j'ai testé
cela donne
Je vais essayer avec le code de Snipah sous sybase.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 -> FROM T AS T0 ; -------+----------+---------------------+---------------------+ AdmID | optionID | DT_MIN | DT_MAX | -------+----------+---------------------+---------------------+ 1 | x | 2009-10-10 08:03:23 | 2009-10-10 08:04:20 | 1 | y | NULL | NULL | 1 | z | NULL | NULL | 2 | x | NULL | NULL | 2 | y | NULL | NULL | 2 | z | NULL | NULL | -------+----------+---------------------+---------------------+
Merci encore
En fait voici une copie des données de ma table sous Sybase ASE :
Ce que je cherche c'est de calculer la durée de chaque mode :
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43 admid datetime optionID 14952 2010-02-27 16:41:41.14 S:VS-PEP/AI 14952 2010-02-27 16:55:00.43 S:VS-PEP/AI 14952 2010-02-27 17:09:57.68 S:VS-PEP/AI 14952 2010-02-27 17:24:57.39 S:VS-PEP/AI 14952 2010-02-27 17:38:40.95 OFF: Standby 14952 2010-02-27 17:39:53.61 OFF: Standby 14952 2010-02-27 17:54:49.83 OFF: Standby 14952 2010-02-27 18:10:13.23 OFF: Standby 14952 2010-02-27 18:25:09.42 OFF: Standby 14952 2010-02-27 18:40:05.66 OFF: Standby 14952 2010-02-27 18:54:52.75 OFF: Standby 14952 2010-02-27 19:10:12.34 OFF: Standby 14952 2010-02-27 19:25:08.21 OFF: Standby 14952 2010-02-27 19:40:04.08 OFF: Standby 14952 2010-02-27 19:55:03.98 OFF: Standby 14952 2010-02-27 20:09:59.87 OFF: Standby 14952 2010-02-27 20:24:55.77 OFF: Standby 14952 2010-02-27 20:40:17.38 OFF: Standby 14952 2010-02-27 20:43:31.06 S:VS-PEP/AI 14952 2010-02-27 20:55:13.21 S:VS-PEP/AI 14952 2010-02-27 21:07:18.08 S:VS-PEP/AI 14952 2010-02-27 21:22:16.54 S:VS-PEP/AI 14952 2010-02-27 21:33:58.69 P:BIPAP/AI 14952 2010-02-27 21:35:11.29 S:VS-PEP/AI 14952 2010-02-27 21:37:36.59 S:VS-PEP/AI 14952 2010-02-27 21:52:34.01 S:VS-PEP/AI 14952 2010-02-27 22:07:31.39 S:VS-PEP/AI 14952 2010-02-27 22:16:25.64 OFF: Standby 14952 2010-02-27 22:21:52.54 OFF: Standby 14952 2010-02-27 22:37:08.95 OFF: Standby 14952 2010-02-27 22:52:03.39 OFF: Standby 14952 2010-02-27 23:06:58.48 OFF: Standby 14952 2010-02-27 23:21:53.52 OFF: Standby 14952 2010-02-27 23:37:12.9 OFF: Standby 14952 2010-02-28 13:05:12.33 P:BIPAP/AI 14952 2010-02-28 13:08:03.09 P:BIPAP/AI 14952 2010-02-28 13:23:06.0 P:BIPAP/AI 14952 2010-02-28 13:38:02.77 P:BIPAP/AI 14952 2010-02-28 13:53:21.71 P:BIPAP/AI 14952 2010-02-28 14:08:17.06 P:BIPAP/AI 14952 2010-02-28 14:23:13.88 P:BIPAP/AI
exemple :
mode S:VS-PEP/AI: il y a trois plages ou c'était actif :
(2010-02-27 17:24:57.39 - 2010-02-27 16:41:41.14 )
+ ( 2010-02-27 21:07:18.08 - 2010-02-27 20:43:31.06) +
(2010-02-27 21:52:34.01-2010-02-27 21:35:11.29)
idem pour les autres ..
Je n'ai pas le droit de créer des tables en PROD..
Pas même de tables temporaires?
Et dites nous au moins ce que donne ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT identity(10) AS pos, adminid, datetime, optionid FROM nom_table ORDER BY adminid, datetime
Je viens de l'éxecuter comme suit :
Ensuite un select dans la table temp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT Rownum=IDENTITY(10) ,adminid, datetime, optionid into #temp FROM nom_table ORDER BY adminid, datetime
Sous Sybase , résultat :
Je suis allé jusqu'au bout avec votre code et j'ai le résultat suivant :
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
30
31
32
33
34 Rownum admId datetime optionID 1 14952 2010-02-27 16:41:41.14 S:VS-PEP/AI 2 14952 2010-02-27 16:55:00.43 S:VS-PEP/AI 3 14952 2010-02-27 17:09:57.68 S:VS-PEP/AI 4 14952 2010-02-27 17:24:57.39 S:VS-PEP/AI 5 14952 2010-02-27 17:38:40.95 OFF: Standby 6 14952 2010-02-27 17:39:53.61 OFF: Standby 7 14952 2010-02-27 17:54:49.83 OFF: Standby 8 14952 2010-02-27 18:10:13.23 OFF: Standby 9 14952 2010-02-27 18:25:09.42 OFF: Standby 10 14952 2010-02-27 18:40:05.66 OFF: Standby 11 14952 2010-02-27 18:54:52.75 OFF: Standby 12 14952 2010-02-27 19:10:12.34 OFF: Standby 13 14952 2010-02-27 19:25:08.21 OFF: Standby 14 14952 2010-02-27 19:40:04.08 OFF: Standby 15 14952 2010-02-27 19:55:03.98 OFF: Standby 16 14952 2010-02-27 20:09:59.87 OFF: Standby 17 14952 2010-02-27 20:24:55.77 OFF: Standby 18 14952 2010-02-27 20:40:17.38 OFF: Standby 19 14952 2010-02-27 20:43:31.06 S:VS-PEP/AI 20 14952 2010-02-27 20:55:13.21 S:VS-PEP/AI 21 14952 2010-02-27 21:07:18.08 S:VS-PEP/AI 22 14952 2010-02-27 21:22:16.54 S:VS-PEP/AI 23 14952 2010-02-27 21:33:58.69 P:BIPAP/AI 24 14952 2010-02-27 21:35:11.29 S:VS-PEP/AI 25 14952 2010-02-27 21:37:36.59 S:VS-PEP/AI 26 14952 2010-02-27 21:52:34.01 S:VS-PEP/AI 27 14952 2010-02-27 22:07:31.39 S:VS-PEP/AI 28 14952 2010-02-27 22:16:25.64 OFF: Standby 29 14952 2010-02-27 22:21:52.54 OFF: Standby 30 14952 2010-02-27 22:37:08.95 OFF: Standby ....
pour la valeur : S:VS-PEP/AI
C'est parfaitement ce que je voulais ..Un grand merci à vous tous pour l'aide précieuse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 adminid mini maxi 14952 2010-02-27 16:41:41.14 2010-02-27 17:24:57.39 14952 2010-02-27 20:43:31.06 2010-02-27 21:22:16.54 14952 2010-02-27 21:35:11.29 2010-02-27 22:07:31.39
Et bien lancez dans l'ordre les trois requête que je vous ai posté plus haut, en remplaçantpar
Code : Sélectionner tout - Visualiser dans une fenêtre à part identity(10) AS posVous devriez obtenir ce que vous cherchez.
Code : Sélectionner tout - Visualiser dans une fenêtre à part pos=identity(10)
Je voudrais apporter une modification
Ce que je souhaiterais ce nest pas le min-max des plages mais le min et la valeur qui a juste après le max ..
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 admid datetime optionID 14952 2010-02-27 16:41:41.14 S:VS-PEP/AI 14952 2010-02-27 16:55:00.43 S:VS-PEP/AI 14952 2010-02-27 17:09:57.68 S:VS-PEP/AI 14952 2010-02-27 17:24:57.39 S:VS-PEP/AI 14952 2010-02-27 17:38:40.95 OFF: Standby 14952 2010-02-27 17:39:53.61 OFF: Standby 14952 2010-02-27 17:54:49.83 OFF: Standby 14952 2010-02-27 18:10:13.23 OFF: Standby 14952 2010-02-27 18:25:09.42 OFF: Standby 14952 2010-02-27 18:40:05.66 OFF: Standby 14952 2010-02-27 18:54:52.75 OFF: Standby 14952 2010-02-27 19:10:12.34 OFF: Standby 14952 2010-02-27 19:25:08.21 OFF: Standby 14952 2010-02-27 19:40:04.08 OFF: Standby 14952 2010-02-27 19:55:03.98 OFF: Standby 14952 2010-02-27 20:09:59.87 OFF: Standby 14952 2010-02-27 20:24:55.77 OFF: Standby 14952 2010-02-27 20:40:17.38 OFF: Standby 14952 2010-02-27 20:43:31.06 S:VS-PEP/AI 14952 2010-02-27 20:55:13.21 S:VS-PEP/AI 14952 2010-02-27 21:07:18.08 S:VS-PEP/AI 14952 2010-02-27 21:22:16.54 S:VS-PEP/AI 14952 2010-02-27 21:33:58.69 P:BIPAP/AI 14952 2010-02-27 21:35:11.29 S:VS-PEP/AI 14952 2010-02-27 21:37:36.59 S:VS-PEP/AI 14952 2010-02-27 21:52:34.01 S:VS-PEP/AI 14952 2010-02-27 22:07:31.39 S:VS-PEP/AI 14952 2010-02-27 22:16:25.64 OFF: Standby 14952 2010-02-27 22:21:52.54 OFF: Standby 14952 2010-02-27 22:37:08.95 OFF: Standby 14952 2010-02-27 22:52:03.39 OFF: Standby 14952 2010-02-27 23:06:58.48 OFF: Standby 14952 2010-02-27 23:21:53.52 OFF: Standby 14952 2010-02-27 23:37:12.9 OFF: Standby 14952 2010-02-28 13:05:12.33 P:BIPAP/AI 14952 2010-02-28 13:08:03.09 P:BIPAP/AI 14952 2010-02-28 13:23:06.0 P:BIPAP/AI 14952 2010-02-28 13:38:02.77 P:BIPAP/AI 14952 2010-02-28 13:53:21.71 P:BIPAP/AI 14952 2010-02-28 14:08:17.06 P:BIPAP/AI 14952 2010-02-28 14:23:13.88 P:BIPAP/AI
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager