Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

3 réponses
Avatar
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.

3 réponses

Avatar
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;
Avatar
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;
Avatar
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