Requête analyse croisée et regroupement de données
3 réponses
yannickh
Bonjour,
Ma base de données comporte les champs "Prix" et "Rg". Je précise que pour des raisons de formatage et de déclaration à un organisme officiel, je ne peux pas modifier la structure de la table (au bout du traitement de données, j'ai une macro qui génère un fichier .txt qui est transmis à un automate).
"Prix" est variable et "Rg" prend les valeurs suivantes : 1, 2 ou 3. Afin d'analyser l'activité, j'ai paramétré une requête analyse croisée avec en ligne "prix" et en colonne "rg" et en valeur compte_de_rg le but étant de compter le nombre d'occurences de prix pour chaque rang et cela marche très bien.
Le souci est que je veux afficher ces résultats sachant que je dois regrouper les prix de rg =2 ET rg =3. Or rg=2 et rg=3 ne sont pas systématique pour chaque prix...
Exemple de ma requête analyse croisée
Prix [1] [2] [3]
25,00 15 0 0
30,00 0 1 0
45,00 20 0 1
50,00 0 1 1
Et je voudrais présenter les données de Rg=2 + rg=3 (appelées Retours)
Prix Retours
30,00 1
45,00 1
50,00 2
Chose que j'arrive à faire facilement dans un formulaire en mode feuille de données avec un champ "prix" et un champ "retour" lié à [2]+[3].
D'après mes prévisions, malheureusement vérifiées par mes essais, le problème est que ça retourne une erreur si par malheur au cours du mois il n'y a aucun rg3 ou aucun rg2 (la source contrôle [2] ou [3] issue de la requête analyse croisée selon les cas n'existe tout simplement pas.....)
J'ai longuement parcouru le forum d'entraide et j'ai trouvé ci et là des possibilités mais je ne suis pas sûr de la meilleure méthode. Aussi je vous soumets mon problème ;)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Michel__D
Bonjour,
"yannickh" a écrit dans le message de news:
Bonjour, Ma base de données comporte les champs "Prix" et "Rg". Je précise que pour des raisons de formatage et de déclaration à un organisme officiel, je ne peux pas modifier la structure de la table (au bout du traitement de données, j'ai une macro qui génère un fichier .txt qui est transmis à un automate). "Prix" est variable et "Rg" prend les valeurs suivantes : 1, 2 ou 3. Afin d'analyser l'activité, j'ai paramétré une requête analyse croisée avec en ligne "prix" et en colonne "rg" et en valeur compte_de_rg le but étant de compter le nombre d'occurences de prix pour chaque rang et cela marche très bien.
Le souci est que je veux afficher ces résultats sachant que je dois regrouper les prix de rg =2 ET rg =3. Or rg=2 et rg=3 ne sont pas systématique pour chaque prix...
Exemple de ma requête analyse croisée Prix [1] [2] [3] 25,00 15 0 0 30,00 0 1 0 45,00 20 0 1 50,00 0 1 1
Et je voudrais présenter les données de Rg=2 + rg=3 (appelées Retours) Prix Retours 30,00 1 45,00 1 50,00 2
Chose que j'arrive à faire facilement dans un formulaire en mode feuille de données avec un champ "prix" et un champ "retour" lié à [2]+[3].
D'après mes prévisions, malheureusement vérifiées par mes essais, le problème est que ça retourne une erreur si par malheur au cours du mois il n'y a aucun rg3 ou aucun rg2 (la source contrôle [2] ou [3] issue de la requête analyse croisée selon les cas n'existe tout simplement pas.....)
J'ai longuement parcouru le forum d'entraide et j'ai trouvé ci et là des possibilités mais je ne suis pas sûr de la meilleure méthode. Aussi je vous soumets mon problème ;)
Merci d'avance.
Voici ma proposition en 2 requêtes :
La requête qui prépare nommée "ReqPrepare"
SELECT T.Prix, Count(T.Rg) AS CompteDeRg, "1" AS ChampPivot FROM LaTable AS T WHERE T.Rg = 1 GROUP BY T.Prix UNION SELECT T.Prix, Count(T.Rg), "Retours" FROM LaTable AS T WHERE (T.Rg = 2) Or (T.Rg = 3) GROUP BY T.Prix;
Et la requête d'analyse croisée qui fournit le résultat :
TRANSFORM First(T.CompteDeRg) AS Valeur SELECT T.Prix FROM [rTest9_] AS T GROUP BY T.Prix PIVOT ChampPivot;
Bonjour,
"yannickh" <yannickh@domain-xyz.in> a écrit dans le message de news:lcWdnb8QQZhqSxnURVn_vwA@giganews.com...
Bonjour,
Ma base de données comporte les champs "Prix" et "Rg". Je précise que pour des
raisons de formatage et de déclaration à un organisme officiel, je ne peux pas
modifier la structure de la table (au bout du traitement de données, j'ai une
macro qui génère un fichier .txt qui est transmis à un automate).
"Prix" est variable et "Rg" prend les valeurs suivantes : 1, 2 ou 3. Afin
d'analyser l'activité, j'ai paramétré une requête analyse croisée avec en ligne
"prix" et en colonne "rg" et en valeur compte_de_rg le but étant de compter le
nombre d'occurences de prix pour chaque rang et cela marche très bien.
Le souci est que je veux afficher ces résultats sachant que je dois regrouper
les prix de rg =2 ET rg =3. Or rg=2 et rg=3 ne sont pas systématique pour chaque
prix...
Exemple de ma requête analyse croisée
Prix [1] [2] [3]
25,00 15 0 0
30,00 0 1 0
45,00 20 0 1
50,00 0 1 1
Et je voudrais présenter les données de Rg=2 + rg=3 (appelées Retours)
Prix Retours
30,00 1
45,00 1
50,00 2
Chose que j'arrive à faire facilement dans un formulaire en mode feuille de
données avec un champ "prix" et un champ "retour" lié à [2]+[3].
D'après mes prévisions, malheureusement vérifiées par mes essais, le problème
est que ça retourne une erreur si par malheur au cours du mois il n'y a aucun
rg3 ou aucun rg2 (la source contrôle [2] ou [3] issue de la requête analyse
croisée selon les cas n'existe tout simplement pas.....)
J'ai longuement parcouru le forum d'entraide et j'ai trouvé ci et là des
possibilités mais je ne suis pas sûr de la meilleure méthode. Aussi je vous
soumets mon problème ;)
Merci d'avance.
Voici ma proposition en 2 requêtes :
La requête qui prépare nommée "ReqPrepare"
SELECT T.Prix, Count(T.Rg) AS CompteDeRg, "1" AS ChampPivot
FROM LaTable AS T
WHERE T.Rg = 1
GROUP BY T.Prix
UNION SELECT T.Prix, Count(T.Rg), "Retours"
FROM LaTable AS T
WHERE (T.Rg = 2) Or (T.Rg = 3)
GROUP BY T.Prix;
Et la requête d'analyse croisée qui fournit le résultat :
TRANSFORM First(T.CompteDeRg) AS Valeur
SELECT T.Prix
FROM [rTest9_] AS T
GROUP BY T.Prix
PIVOT ChampPivot;
Bonjour, Ma base de données comporte les champs "Prix" et "Rg". Je précise que pour des raisons de formatage et de déclaration à un organisme officiel, je ne peux pas modifier la structure de la table (au bout du traitement de données, j'ai une macro qui génère un fichier .txt qui est transmis à un automate). "Prix" est variable et "Rg" prend les valeurs suivantes : 1, 2 ou 3. Afin d'analyser l'activité, j'ai paramétré une requête analyse croisée avec en ligne "prix" et en colonne "rg" et en valeur compte_de_rg le but étant de compter le nombre d'occurences de prix pour chaque rang et cela marche très bien.
Le souci est que je veux afficher ces résultats sachant que je dois regrouper les prix de rg =2 ET rg =3. Or rg=2 et rg=3 ne sont pas systématique pour chaque prix...
Exemple de ma requête analyse croisée Prix [1] [2] [3] 25,00 15 0 0 30,00 0 1 0 45,00 20 0 1 50,00 0 1 1
Et je voudrais présenter les données de Rg=2 + rg=3 (appelées Retours) Prix Retours 30,00 1 45,00 1 50,00 2
Chose que j'arrive à faire facilement dans un formulaire en mode feuille de données avec un champ "prix" et un champ "retour" lié à [2]+[3].
D'après mes prévisions, malheureusement vérifiées par mes essais, le problème est que ça retourne une erreur si par malheur au cours du mois il n'y a aucun rg3 ou aucun rg2 (la source contrôle [2] ou [3] issue de la requête analyse croisée selon les cas n'existe tout simplement pas.....)
J'ai longuement parcouru le forum d'entraide et j'ai trouvé ci et là des possibilités mais je ne suis pas sûr de la meilleure méthode. Aussi je vous soumets mon problème ;)
Merci d'avance.
Voici ma proposition en 2 requêtes :
La requête qui prépare nommée "ReqPrepare"
SELECT T.Prix, Count(T.Rg) AS CompteDeRg, "1" AS ChampPivot FROM LaTable AS T WHERE T.Rg = 1 GROUP BY T.Prix UNION SELECT T.Prix, Count(T.Rg), "Retours" FROM LaTable AS T WHERE (T.Rg = 2) Or (T.Rg = 3) GROUP BY T.Prix;
Et la requête d'analyse croisée qui fournit le résultat :
TRANSFORM First(T.CompteDeRg) AS Valeur SELECT T.Prix FROM [rTest9_] AS T GROUP BY T.Prix PIVOT ChampPivot;
Michel__D
Petite correction.
Voici ma proposition en 2 requêtes :
La requête qui prépare nommée "ReqPrepare"
SELECT T.Prix, Count(T.Rg) AS CompteDeRg, "1" AS ChampPivot FROM LaTable AS T WHERE T.Rg = 1 GROUP BY T.Prix UNION SELECT T.Prix, Count(T.Rg), "Retours" FROM LaTable AS T WHERE (T.Rg = 2) Or (T.Rg = 3) GROUP BY T.Prix;
Et la requête d'analyse croisée qui fournit le résultat :
TRANSFORM First(T.CompteDeRg) AS Valeur SELECT T.Prix FROM ReqPrepare AS T GROUP BY T.Prix PIVOT ChampPivot;
Petite correction.
Voici ma proposition en 2 requêtes :
La requête qui prépare nommée "ReqPrepare"
SELECT T.Prix, Count(T.Rg) AS CompteDeRg, "1" AS ChampPivot
FROM LaTable AS T
WHERE T.Rg = 1
GROUP BY T.Prix
UNION SELECT T.Prix, Count(T.Rg), "Retours"
FROM LaTable AS T
WHERE (T.Rg = 2) Or (T.Rg = 3)
GROUP BY T.Prix;
Et la requête d'analyse croisée qui fournit le résultat :
TRANSFORM First(T.CompteDeRg) AS Valeur
SELECT T.Prix
FROM ReqPrepare AS T
GROUP BY T.Prix
PIVOT ChampPivot;
SELECT T.Prix, Count(T.Rg) AS CompteDeRg, "1" AS ChampPivot FROM LaTable AS T WHERE T.Rg = 1 GROUP BY T.Prix UNION SELECT T.Prix, Count(T.Rg), "Retours" FROM LaTable AS T WHERE (T.Rg = 2) Or (T.Rg = 3) GROUP BY T.Prix;
Et la requête d'analyse croisée qui fournit le résultat :
TRANSFORM First(T.CompteDeRg) AS Valeur SELECT T.Prix FROM ReqPrepare AS T GROUP BY T.Prix PIVOT ChampPivot;
yannickh
Michel__D a écrit le 02/02/2009 à 12h56 :
Petite correction.
Voici ma proposition en 2 requêtes :
La requête qui prépare nommée "ReqPrepare"
SELECT T.Prix, Count(T.Rg) AS CompteDeRg, "1" AS ChampPivot FROM LaTable AS T WHERE T.Rg = 1 GROUP BY T.Prix UNION SELECT T.Prix, Count(T.Rg), "Retours" FROM LaTable AS T WHERE (T.Rg = 2) Or (T.Rg = 3) GROUP BY T.Prix;
Et la requête d'analyse croisée qui fournit le résultat :
TRANSFORM First(T.CompteDeRg) AS Valeur SELECT T.Prix FROM ReqPrepare AS T GROUP BY T.Prix PIVOT ChampPivot;
Merci encore :)
J'avais vu la petite erreur et j'avais corrigé dans ma requête :)
Bonne continuation
Michel__D a écrit le 02/02/2009 à 12h56 :
Petite correction.
Voici ma proposition en 2 requêtes :
La requête qui prépare nommée "ReqPrepare"
SELECT T.Prix, Count(T.Rg) AS CompteDeRg, "1" AS ChampPivot
FROM LaTable AS T
WHERE T.Rg = 1
GROUP BY T.Prix
UNION SELECT T.Prix, Count(T.Rg), "Retours"
FROM LaTable AS T
WHERE (T.Rg = 2) Or (T.Rg = 3)
GROUP BY T.Prix;
Et la requête d'analyse croisée qui fournit le résultat :
TRANSFORM First(T.CompteDeRg) AS Valeur
SELECT T.Prix
FROM ReqPrepare AS T
GROUP BY T.Prix
PIVOT ChampPivot;
Merci encore :)
J'avais vu la petite erreur et j'avais corrigé dans ma requête :)
SELECT T.Prix, Count(T.Rg) AS CompteDeRg, "1" AS ChampPivot FROM LaTable AS T WHERE T.Rg = 1 GROUP BY T.Prix UNION SELECT T.Prix, Count(T.Rg), "Retours" FROM LaTable AS T WHERE (T.Rg = 2) Or (T.Rg = 3) GROUP BY T.Prix;
Et la requête d'analyse croisée qui fournit le résultat :
TRANSFORM First(T.CompteDeRg) AS Valeur SELECT T.Prix FROM ReqPrepare AS T GROUP BY T.Prix PIVOT ChampPivot;
Merci encore :)
J'avais vu la petite erreur et j'avais corrigé dans ma requête :)