Créer un filtrage (bande morte) lors de l'extraction

Le
sfauchille
J'ai une table T1 avec 3 colonnes, Nom,DateTime, Valeur contenant


Nom , DateTime , Valeur
Var1 , 04/09/2008, 17:00:00, 1
Var1 , 04/09/2008, 17:00:15, 0
Var1 , 04/09/2008, 17:00:20, 1
Var1 , 04/09/2008, 17:00:30, 0
Var1 , 04/09/2008, 17:00:40, 1
Var1 , 04/09/2008, 17:00:50, 0
Var1 , 04/09/2008, 17:00:52, 1
Var1 , 04/09/2008, 17:00:55, 0
Var1 , 04/09/2008, 17:01:30, 1
Var1 , 04/09/2008, 17:02:50, 0

Je souhaite récupérer le nombre de passage à 1 mais où la durée =
à 0 et
supérieur à 5 secondes
Donc logiquement ici 3 :
Var1 , 04/09/2008, 17:00:00, 1
Var1 , 04/09/2008, 17:00:40, 1
Var1 , 04/09/2008, 17:01:30, 1


Si quelqu'un peut m'aider.

Merci d'avance
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
sfauchille
Le #16770441
On 4 sep, 18:16, ""
J'ai une table T1 avec 3 colonnes, Nom,DateTime, Valeur contenant

Nom , DateTime  , Valeur
Var1 , 04/09/2008, 17:00:00, 1
Var1 , 04/09/2008, 17:00:15, 0
Var1 , 04/09/2008, 17:00:20, 1
Var1 , 04/09/2008, 17:00:30, 0
Var1 , 04/09/2008, 17:00:40, 1
Var1 , 04/09/2008, 17:00:50, 0
Var1 , 04/09/2008, 17:00:52, 1
Var1 , 04/09/2008, 17:00:55, 0
Var1 , 04/09/2008, 17:01:30, 1
Var1 , 04/09/2008, 17:02:50, 0

Je souhaite récupérer le nombre de passage à 1 mais où la durée à 0 et
supérieur à 5 secondes
Donc logiquement ici 3 :
Var1 , 04/09/2008, 17:00:00, 1
Var1 , 04/09/2008, 17:00:40, 1
Var1 , 04/09/2008, 17:01:30, 1

Si quelqu'un peut m'aider.

Merci d'avance



Personne pour m"aider.
Dommage
Fred BROUARD
Le #16771911
le titre de votre demande est incompréhensible et votre demande incomplète.
voici néanmoins un début de réponse :

CREATE TABLE T1 (Nom VARCHAR(4), DateHeure DATETIME, Valeur INT)

INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:00', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:15', 0)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:20', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:30', 0)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:40', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:50', 0)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:52', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:55', 0)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:01:30', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:02:50', 0)


SELECT Nom, DateHeure, Valeur, DATEDIFF(second, DateHeure, DTfin) AS
DureeSeconde
FROM (SELECT *, (SELECT MIN(DateHeure)
FROM T1 AS TIN
WHERE TIN.Nom = TOUT.Nom
AND TIN.DateHeure > TOUT.DateHeure) AS DTfin
FROM T1 AS TOUT) AS T

maintenant quelle est la référence de durée à 0 ???? par rapport à
quelle chronologie ????

Soyez clair et précis si vous voulez de l'aide !

A +



a écrit :
J'ai une table T1 avec 3 colonnes, Nom,DateTime, Valeur contenant


Nom , DateTime , Valeur
Var1 , 04/09/2008, 17:00:00, 1
Var1 , 04/09/2008, 17:00:15, 0
Var1 , 04/09/2008, 17:00:20, 1
Var1 , 04/09/2008, 17:00:30, 0
Var1 , 04/09/2008, 17:00:40, 1
Var1 , 04/09/2008, 17:00:50, 0
Var1 , 04/09/2008, 17:00:52, 1
Var1 , 04/09/2008, 17:00:55, 0
Var1 , 04/09/2008, 17:01:30, 1
Var1 , 04/09/2008, 17:02:50, 0

Je souhaite récupérer le nombre de passage à 1 mais où la durée à 0 et
supérieur à 5 secondes
Donc logiquement ici 3 :
Var1 , 04/09/2008, 17:00:00, 1
Var1 , 04/09/2008, 17:00:40, 1
Var1 , 04/09/2008, 17:01:30, 1


Si quelqu'un peut m'aider.

Merci d'avance




--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
Patrice
Le #16771571
Bonjour,

La communication sur internet étant difficile à première vue j'avais
l'impression que tu voulais restaurer partiellement une table à partir d'une
bande HS !!! Comme quoi...

A première vue je dirais qq chose comme (non testé et de bon matin) :

SELECT *,(SELECT TOP 1 DateTime FROM MaTable WHERE Valeur=0 AND
DateTime>t.DateTime ORDER BY DAteTime) AS Fin FROM MaTable t WHERE Valeur=1

L'idée est de prendre les valeurs à 1 et de mettre à côté la valeur 0 (qui
est la fin de l'opération ?) avec la date immédiatement supérieure. La même
sous-requête peut-être utilisée dans un DATEDIFF pour mettre le critère sur
la durée.

Bonne continuation

--
Patrice


On 4 sep, 18:16, ""
J'ai une table T1 avec 3 colonnes, Nom,DateTime, Valeur contenant

Nom , DateTime , Valeur
Var1 , 04/09/2008, 17:00:00, 1
Var1 , 04/09/2008, 17:00:15, 0
Var1 , 04/09/2008, 17:00:20, 1
Var1 , 04/09/2008, 17:00:30, 0
Var1 , 04/09/2008, 17:00:40, 1
Var1 , 04/09/2008, 17:00:50, 0
Var1 , 04/09/2008, 17:00:52, 1
Var1 , 04/09/2008, 17:00:55, 0
Var1 , 04/09/2008, 17:01:30, 1
Var1 , 04/09/2008, 17:02:50, 0

Je souhaite récupérer le nombre de passage à 1 mais où la durée à 0 et
supérieur à 5 secondes
Donc logiquement ici 3 :
Var1 , 04/09/2008, 17:00:00, 1
Var1 , 04/09/2008, 17:00:40, 1
Var1 , 04/09/2008, 17:01:30, 1

Si quelqu'un peut m'aider.

Merci d'avance



Personne pour m"aider.
Dommage


sfauchille
Le #17468041
On 10 sep, 10:10, Fred BROUARD
le titre de votre demande est incompréhensible et votre demande incompl ète.
voici néanmoins un début de réponse :

CREATE TABLE T1 (Nom VARCHAR(4), DateHeure DATETIME, Valeur INT)

INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:00', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:15', 0)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:20', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:30', 0)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:40', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:50', 0)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:52', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:00:55', 0)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:01:30', 1)
INSERT INTO T1 VALUES ('Var1' , '04/09/2008 17:02:50', 0)

SELECT Nom, DateHeure, Valeur, DATEDIFF(second, DateHeure, DTfin) AS
DureeSeconde
FROM (SELECT *, (SELECT MIN(DateHeure)
            FROM   T1 AS TIN
            WHERE  TIN.Nom = TOUT.Nom
              AND  TIN.DateHeure > TOUT.DateHeure) AS DTf in
FROM   T1 AS TOUT) AS T

maintenant quelle est la référence de durée à 0 ???? par rapport à
quelle chronologie ????

Soyez clair et précis si vous voulez de l'aide !

A +

a écrit :





> J'ai une table T1 avec 3 colonnes, Nom,DateTime, Valeur contenant

> Nom , DateTime  , Valeur
> Var1 , 04/09/2008, 17:00:00, 1
> Var1 , 04/09/2008, 17:00:15, 0
> Var1 , 04/09/2008, 17:00:20, 1
> Var1 , 04/09/2008, 17:00:30, 0
> Var1 , 04/09/2008, 17:00:40, 1
> Var1 , 04/09/2008, 17:00:50, 0
> Var1 , 04/09/2008, 17:00:52, 1
> Var1 , 04/09/2008, 17:00:55, 0
> Var1 , 04/09/2008, 17:01:30, 1
> Var1 , 04/09/2008, 17:02:50, 0

> Je souhaite récupérer le nombre de passage à 1 mais où la dur ée à 0 et
> supérieur à 5 secondes
> Donc logiquement ici 3 :
> Var1 , 04/09/2008, 17:00:00, 1
> Var1 , 04/09/2008, 17:00:40, 1
> Var1 , 04/09/2008, 17:01:30, 1

> Si quelqu'un peut m'aider.

> Merci d'avance

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langag e SQL
Le site sur le langage SQL et les SGBDR  :  http://sqlpro.developpez. com
Audit, conseil, expertise, formation, modélisation, tuning, optimisatio n
***********************http://www.sqlspot.com*************************- M asquer le texte des messages précédents -

- Afficher le texte des messages précédents -



Bonjour,
Effectivement ma demande peut sembler ne pas être claire et j'en suis
désolé.
En clair je bosse dans l'automatisme et j'enregistre dans une base de
données le changement d'état de vannes (vanne fermée =0 et vanne
ouverte =1).
Et on me demande la chose suivante.
Pour une vanne donnée (Var1 par exemple) je souhaite savoir combien de
fois cette vanne a été ouverte (jusque là pas de problème) mais don t
la durée d'ouverture est supérieur à 5 secondes.
Voila, j'espère avoir été plus clair dans mon explication
Bonne journée à vous
Publicité
Poster une réponse
Anonyme