Aide sur une requête de changement d'état
Fermé
flonox1980
Messages postés
1
Date d'inscription
dimanche 22 juin 2014
Statut
Membre
Dernière intervention
22 juin 2014
-
22 juin 2014 à 10:43
cyril1982 Messages postés 110 Date d'inscription vendredi 7 mars 2014 Statut Membre Dernière intervention 19 septembre 2018 - 30 juin 2014 à 13:41
cyril1982 Messages postés 110 Date d'inscription vendredi 7 mars 2014 Statut Membre Dernière intervention 19 septembre 2018 - 30 juin 2014 à 13:41
A voir également:
- Aide sur une requête de changement d'état
- Changer de dns - Guide
- Changement d'écriture - Guide
- Aide etat reparation electromenager - Accueil - Sauvegarde
- Changement carte graphique - Guide
- Changement clavier azerty - Guide
2 réponses
cyril1982
Messages postés
110
Date d'inscription
vendredi 7 mars 2014
Statut
Membre
Dernière intervention
19 septembre 2018
12
25 juin 2014 à 14:08
25 juin 2014 à 14:08
Bonjour,
Je n'ai pas la requête exacte à ton besoin, mais j'ai une piste :
N'ayant pas de base de données lancée sur mon poste, il peut y avoir des erreurs de syntaxe.
Explications :
Dans la sous-requête (table table_position), j'ajoute un champ position afin de trier les changements d'état de chaque client.
Ce qui renvoie :
Client0, Etat0, Date0, 0
Client0, Etat1, Date1, 1
Client0, Etat2, Date2, 2
Client1, Etat0, Date0, 0
Client1, Etat1, Date1, 1
Client1, Etat2, Date2, 2
...
Dans la requête principale, via "group by Client, position / 2", je regroupe les entrées de la table deux à deux pour chaque client.
Puis j'utilise les "case when" afin de récupérer les Etats/Date d'une position particulière.
Cette requête ne correspond pas tout à fait à ton besoin, en effet je regroupe deux à deux (0 avec 1, 2 avec 3, 4 avec 5 etc.) Alors que chaque entrée devrait être regrouper avec la précédente et la suivante (0 avec 1, 1 avec 2, 2 avec 3 etc.). De plus, je ne vérifie pas le changement d'état.
Bon courage !!
Je n'ai pas la requête exacte à ton besoin, mais j'ai une piste :
Select Client, max(case when position % 2 = 0 then Etat else null end), max(case when position % 2 = 0 then null else Etat end), max(case when position % 2 = 0 then null else Date end) from ( select Client, Etat, Date, ROW_NUMBER() OVER (PARTITION BY Client ORDER BY Date desc) as position from ma_table_clients ) as table_position group by Client, position / 2
N'ayant pas de base de données lancée sur mon poste, il peut y avoir des erreurs de syntaxe.
Explications :
Dans la sous-requête (table table_position), j'ajoute un champ position afin de trier les changements d'état de chaque client.
Ce qui renvoie :
Client0, Etat0, Date0, 0
Client0, Etat1, Date1, 1
Client0, Etat2, Date2, 2
Client1, Etat0, Date0, 0
Client1, Etat1, Date1, 1
Client1, Etat2, Date2, 2
...
Dans la requête principale, via "group by Client, position / 2", je regroupe les entrées de la table deux à deux pour chaque client.
Puis j'utilise les "case when" afin de récupérer les Etats/Date d'une position particulière.
Cette requête ne correspond pas tout à fait à ton besoin, en effet je regroupe deux à deux (0 avec 1, 2 avec 3, 4 avec 5 etc.) Alors que chaque entrée devrait être regrouper avec la précédente et la suivante (0 avec 1, 1 avec 2, 2 avec 3 etc.). De plus, je ne vérifie pas le changement d'état.
Bon courage !!
Bonjour,
merci beaucoup de ce retour très complet et clair.
je me mets à la tâche de suite, mais la solution est là.
Encore merci
merci beaucoup de ce retour très complet et clair.
je me mets à la tâche de suite, mais la solution est là.
Encore merci
cyril1982
Messages postés
110
Date d'inscription
vendredi 7 mars 2014
Statut
Membre
Dernière intervention
19 septembre 2018
12
30 juin 2014 à 13:41
30 juin 2014 à 13:41
De rien, bon courage ^^