Requête analyse croisée et regroupement de données

Le
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 ;)

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
Michel__D
Le #18555901
Bonjour,

"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 ;)

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
Le #18557731
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;
yannickh
Le #18568521
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
Publicité
Poster une réponse
Anonyme