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

Somme

10 réponses
Avatar
Stéf
Bonjour,

Je cherche a faire une somme des nombres en fonction de leur type pour un
même nom.
J'ai donc une table avec 7 colonnes, dont il existe 3 possibilités de type.
nom, type1, valeur1, type2, valeur2, type3, valeur3

j'ai donc créer un requête pour faire la somme de valeur1 qui on le même
type1, et ainsi de suite pour chaque type.

Je sais donc faire une requête de regroupement par nom pour avoir le total
de valeur pour un type.
J'ai bien essayé de faire la somme de deux requêtes, mais suis pas assez
doué pour faire cela, j'obtient plusieurs somme pour un même nom.

Mon souci, c'est que je n'arrive pas à faire la somme des valeurs d'un
certain type quand il se trouve dans différentes colonnes pour un même nom.

voici pour exemple mes données :

nom - type1 - valeur1 - type2 - valeur2 - type3 - valeur3
marc - rouge - 4 - bleu - 55 - vert - 7
Alain - bleu - 44
Fred - rouge - 8 - bleu - 9
marc - vert - 8
Alain - rouge - 88 - bleu - 41

Et ainsi obtenir un résultat de :

alain rouge 88 - bleu 85 - vert 0
marc rouge 4 - bleu 55 - vert 15
fred rouge 8 - bleu 0 - vert 0


Merci

10 réponses

Avatar
C. ERNST
Il vous faut :

une requète (N) sur les Noms (Valeurs uniques)
Trois requêtes regroupement ( T1, T2 T3) sur chaque Type :
Nom Type1 'Total Valeur1'
Nom Type2 'Total Valeur2'
Nom Type3 'Total Valeur3
'
Vous créez alors une nouvelle requête
N -> T1
-> T2
-> T3
soit :
Select N.Nom, Type1,[Total Valeur1], Type2,[Total Valeur2]], Type3,[Total
Valeur3]
From N ((Left Join T1 On N.Nom = T1.nom) Left Join T2 On N.Nom = T2.Nom)
Left Join T3 on N.Nom = T3.nom



"Stéf" a écrit dans le message de news:

Bonjour,

Je cherche a faire une somme des nombres en fonction de leur type pour un
même nom.
J'ai donc une table avec 7 colonnes, dont il existe 3 possibilités de
type.
nom, type1, valeur1, type2, valeur2, type3, valeur3

j'ai donc créer un requête pour faire la somme de valeur1 qui on le même
type1, et ainsi de suite pour chaque type.

Je sais donc faire une requête de regroupement par nom pour avoir le total
de valeur pour un type.
J'ai bien essayé de faire la somme de deux requêtes, mais suis pas assez
doué pour faire cela, j'obtient plusieurs somme pour un même nom.

Mon souci, c'est que je n'arrive pas à faire la somme des valeurs d'un
certain type quand il se trouve dans différentes colonnes pour un même
nom.

voici pour exemple mes données :

nom - type1 - valeur1 - type2 - valeur2 - type3 - valeur3
marc - rouge - 4 - bleu - 55 - vert - 7
Alain - bleu - 44
Fred - rouge - 8 - bleu - 9
marc - vert - 8
Alain - rouge - 88 - bleu - 41

Et ainsi obtenir un résultat de :

alain rouge 88 - bleu 85 - vert 0
marc rouge 4 - bleu 55 - vert 15
fred rouge 8 - bleu 0 - vert 0


Merci



Avatar
Stéf
Voici se que j'ai fait :
Requête N
SELECT Table1.Nom
FROM Table1;

Requête T1
SELECT DISTINCTROW Table1.Nom, Table1.Type1 AS Type1, Sum(Table1.[valeur 1])
AS [Total Valeur1]
FROM Table1
GROUP BY Table1.Nom, Table1.Type1;

Requête T2
SELECT DISTINCTROW Table1.Nom, Table1.Type2 AS Type2, Sum(Table1.[valeur 2])
AS [Total Valeur2]
FROM Table1
GROUP BY Table1.Nom, Table1.Type2;

Requête T3
SELECT DISTINCTROW Table1.Nom, Table1.Type3 AS Type3, Sum(Table1.[valeur 3])
AS [Total Valeur3]
FROM Table1
GROUP BY Table1.Nom, Table1.Type3;

Alors pour la dernière que tu m'a donnée, j'ai juste pu voir l'erreur du
double ], mais après il me signale une erreur de syntaxe dans la clause from
Select N.Nom, Type1,[Total Valeur1], Type2,[Total Valeur2], Type3,[Total
Valeur3]
From N ((Left Join T1 On N.Nom = T1.nom) Left Join T2 On N.Nom = T2.Nom)
Left Join T3 on N.Nom = T3.nom






"C. ERNST" a écrit dans le message de
news:
Il vous faut :

une requète (N) sur les Noms (Valeurs uniques)
Trois requêtes regroupement ( T1, T2 T3) sur chaque Type :
Nom Type1 'Total Valeur1'
Nom Type2 'Total Valeur2'
Nom Type3 'Total Valeur3
'
Vous créez alors une nouvelle requête
N -> T1
-> T2
-> T3
soit :
Select N.Nom, Type1,[Total Valeur1], Type2,[Total Valeur2]], Type3,[Total
Valeur3]
From N ((Left Join T1 On N.Nom = T1.nom) Left Join T2 On N.Nom = T2.Nom)
Left Join T3 on N.Nom = T3.nom



"Stéf" a écrit dans le message de news:

Bonjour,

Je cherche a faire une somme des nombres en fonction de leur type pour un
même nom.
J'ai donc une table avec 7 colonnes, dont il existe 3 possibilités de
type.
nom, type1, valeur1, type2, valeur2, type3, valeur3

j'ai donc créer un requête pour faire la somme de valeur1 qui on le même
type1, et ainsi de suite pour chaque type.

Je sais donc faire une requête de regroupement par nom pour avoir le
total
de valeur pour un type.
J'ai bien essayé de faire la somme de deux requêtes, mais suis pas assez
doué pour faire cela, j'obtient plusieurs somme pour un même nom.

Mon souci, c'est que je n'arrive pas à faire la somme des valeurs d'un
certain type quand il se trouve dans différentes colonnes pour un même
nom.

voici pour exemple mes données :

nom - type1 - valeur1 - type2 - valeur2 - type3 - valeur3
marc - rouge - 4 - bleu - 55 - vert - 7
Alain - bleu - 44
Fred - rouge - 8 - bleu - 9
marc - vert - 8
Alain - rouge - 88 - bleu - 41

Et ainsi obtenir un résultat de :

alain rouge 88 - bleu 85 - vert 0
marc rouge 4 - bleu 55 - vert 15
fred rouge 8 - bleu 0 - vert 0


Merci







Avatar
C. ERNST
Pour la première requête, il faut :
SELECT DISTINCT Table1.Nom FROM Table1

pour la dernière faut déplacer la parenthèse

Select N.Nom, Type1,[Total Valeur1], Type2,[Total Valeur2], Type3,[Total
Valeur3]
From ((N Left Join T1 On N.Nom = T1.nom) Left Join T2 On N.Nom = T2.Nom)
Left Join T3 on N.Nom = T3.nom


"Stéf" a écrit dans le message de news:
%
Voici se que j'ai fait :
Requête N
SELECT Table1.Nom
FROM Table1;

Requête T1
SELECT DISTINCTROW Table1.Nom, Table1.Type1 AS Type1, Sum(Table1.[valeur
1]) AS [Total Valeur1]
FROM Table1
GROUP BY Table1.Nom, Table1.Type1;

Requête T2
SELECT DISTINCTROW Table1.Nom, Table1.Type2 AS Type2, Sum(Table1.[valeur
2]) AS [Total Valeur2]
FROM Table1
GROUP BY Table1.Nom, Table1.Type2;

Requête T3
SELECT DISTINCTROW Table1.Nom, Table1.Type3 AS Type3, Sum(Table1.[valeur
3]) AS [Total Valeur3]
FROM Table1
GROUP BY Table1.Nom, Table1.Type3;

Alors pour la dernière que tu m'a donnée, j'ai juste pu voir l'erreur du
double ], mais après il me signale une erreur de syntaxe dans la clause
from
Select N.Nom, Type1,[Total Valeur1], Type2,[Total Valeur2], Type3,[Total
Valeur3]
From N ((Left Join T1 On N.Nom = T1.nom) Left Join T2 On N.Nom = T2.Nom)
Left Join T3 on N.Nom = T3.nom






"C. ERNST" a écrit dans le message de
news:
Il vous faut :

une requète (N) sur les Noms (Valeurs uniques)
Trois requêtes regroupement ( T1, T2 T3) sur chaque Type :
Nom Type1 'Total Valeur1'
Nom Type2 'Total Valeur2'
Nom Type3 'Total Valeur3
'
Vous créez alors une nouvelle requête
N -> T1
-> T2
-> T3
soit :
Select N.Nom, Type1,[Total Valeur1], Type2,[Total Valeur2]], Type3,[Total
Valeur3]
From N ((Left Join T1 On N.Nom = T1.nom) Left Join T2 On N.Nom = T2.Nom)
Left Join T3 on N.Nom = T3.nom



"Stéf" a écrit dans le message de news:

Bonjour,

Je cherche a faire une somme des nombres en fonction de leur type pour
un
même nom.
J'ai donc une table avec 7 colonnes, dont il existe 3 possibilités de
type.
nom, type1, valeur1, type2, valeur2, type3, valeur3

j'ai donc créer un requête pour faire la somme de valeur1 qui on le même
type1, et ainsi de suite pour chaque type.

Je sais donc faire une requête de regroupement par nom pour avoir le
total
de valeur pour un type.
J'ai bien essayé de faire la somme de deux requêtes, mais suis pas assez
doué pour faire cela, j'obtient plusieurs somme pour un même nom.

Mon souci, c'est que je n'arrive pas à faire la somme des valeurs d'un
certain type quand il se trouve dans différentes colonnes pour un même
nom.

voici pour exemple mes données :

nom - type1 - valeur1 - type2 - valeur2 - type3 - valeur3
marc - rouge - 4 - bleu - 55 - vert - 7
Alain - bleu - 44
Fred - rouge - 8 - bleu - 9
marc - vert - 8
Alain - rouge - 88 - bleu - 41

Et ainsi obtenir un résultat de :

alain rouge 88 - bleu 85 - vert 0
marc rouge 4 - bleu 55 - vert 15
fred rouge 8 - bleu 0 - vert 0


Merci










Avatar
Stéf
Merci, j'ai bien les totaux.
Mais je ne m'attendais pas à les voir aussi dispersé, pas évident de faire
une feuille de bilan pour chaque nom ^^
Mais bon j'approche de la solution, vais encore cherché.

"C. ERNST" a écrit dans le message de
news:
Pour la première requête, il faut :
SELECT DISTINCT Table1.Nom FROM Table1

pour la dernière faut déplacer la parenthèse

Select N.Nom, Type1,[Total Valeur1], Type2,[Total Valeur2], Type3,[Total
Valeur3]
From ((N Left Join T1 On N.Nom = T1.nom) Left Join T2 On N.Nom = T2.Nom)
Left Join T3 on N.Nom = T3.nom


"Stéf" a écrit dans le message de news:
%
Voici se que j'ai fait :
Requête N
SELECT Table1.Nom
FROM Table1;

Requête T1
SELECT DISTINCTROW Table1.Nom, Table1.Type1 AS Type1, Sum(Table1.[valeur
1]) AS [Total Valeur1]
FROM Table1
GROUP BY Table1.Nom, Table1.Type1;

Requête T2
SELECT DISTINCTROW Table1.Nom, Table1.Type2 AS Type2, Sum(Table1.[valeur
2]) AS [Total Valeur2]
FROM Table1
GROUP BY Table1.Nom, Table1.Type2;

Requête T3
SELECT DISTINCTROW Table1.Nom, Table1.Type3 AS Type3, Sum(Table1.[valeur
3]) AS [Total Valeur3]
FROM Table1
GROUP BY Table1.Nom, Table1.Type3;

Alors pour la dernière que tu m'a donnée, j'ai juste pu voir l'erreur du
double ], mais après il me signale une erreur de syntaxe dans la clause
from
Select N.Nom, Type1,[Total Valeur1], Type2,[Total Valeur2], Type3,[Total
Valeur3]
From N ((Left Join T1 On N.Nom = T1.nom) Left Join T2 On N.Nom = T2.Nom)
Left Join T3 on N.Nom = T3.nom






"C. ERNST" a écrit dans le message de
news:
Il vous faut :

une requète (N) sur les Noms (Valeurs uniques)
Trois requêtes regroupement ( T1, T2 T3) sur chaque Type :
Nom Type1 'Total Valeur1'
Nom Type2 'Total Valeur2'
Nom Type3 'Total Valeur3
'
Vous créez alors une nouvelle requête
N -> T1
-> T2
-> T3
soit :
Select N.Nom, Type1,[Total Valeur1], Type2,[Total Valeur2]],
Type3,[Total Valeur3]
From N ((Left Join T1 On N.Nom = T1.nom) Left Join T2 On N.Nom = T2.Nom)
Left Join T3 on N.Nom = T3.nom



"Stéf" a écrit dans le message de news:

Bonjour,

Je cherche a faire une somme des nombres en fonction de leur type pour
un
même nom.
J'ai donc une table avec 7 colonnes, dont il existe 3 possibilités de
type.
nom, type1, valeur1, type2, valeur2, type3, valeur3

j'ai donc créer un requête pour faire la somme de valeur1 qui on le
même
type1, et ainsi de suite pour chaque type.

Je sais donc faire une requête de regroupement par nom pour avoir le
total
de valeur pour un type.
J'ai bien essayé de faire la somme de deux requêtes, mais suis pas
assez
doué pour faire cela, j'obtient plusieurs somme pour un même nom.

Mon souci, c'est que je n'arrive pas à faire la somme des valeurs d'un
certain type quand il se trouve dans différentes colonnes pour un même
nom.

voici pour exemple mes données :

nom - type1 - valeur1 - type2 - valeur2 - type3 - valeur3
marc - rouge - 4 - bleu - 55 - vert - 7
Alain - bleu - 44
Fred - rouge - 8 - bleu - 9
marc - vert - 8
Alain - rouge - 88 - bleu - 41

Et ainsi obtenir un résultat de :

alain rouge 88 - bleu 85 - vert 0
marc rouge 4 - bleu 55 - vert 15
fred rouge 8 - bleu 0 - vert 0


Merci














Avatar
Michel__D
Bonjour,

Stéf a écrit :
Bonjour,

Je cherche a faire une somme des nombres en fonction de leur type pour un
même nom.
J'ai donc une table avec 7 colonnes, dont il existe 3 possibilités de type.
nom, type1, valeur1, type2, valeur2, type3, valeur3

j'ai donc créer un requête pour faire la somme de valeur1 qui on le même
type1, et ainsi de suite pour chaque type.

Je sais donc faire une requête de regroupement par nom pour avoir le total
de valeur pour un type.
J'ai bien essayé de faire la somme de deux requêtes, mais suis pas assez
doué pour faire cela, j'obtient plusieurs somme pour un même nom.

Mon souci, c'est que je n'arrive pas à faire la somme des valeurs d'un
certain type quand il se trouve dans différentes colonnes pour un même nom.

voici pour exemple mes données :

nom - type1 - valeur1 - type2 - valeur2 - type3 - valeur3
marc - rouge - 4 - bleu - 55 - vert - 7
Alain - bleu - 44
Fred - rouge - 8 - bleu - 9
marc - vert - 8
Alain - rouge - 88 - bleu - 41

Et ainsi obtenir un résultat de :

alain rouge 88 - bleu 85 - vert 0
marc rouge 4 - bleu 55 - vert 15
fred rouge 8 - bleu 0 - vert 0


Merci



A essayer en 2 requêtes; une requête union pour rassembler les données :

SELECT T.nom, T.type1 AS type, T.valeur1 AS valeur
FROM LaTable AS T
UNION
SELECT T.nom, T.type2, T.valeur2
FROM LaTable AS T
UNION
SELECT T.nom, T.type3, T.valeur3
FROM LaTable AS T;

Puis une requête d'analyse croisée pour le résultat final :

TRANSFORM Sum(R.valeur) AS valeur
SELECT R.nom
FROM LaRequeteUnion AS R
GROUP BY R.nom
PIVOT R.type;
Avatar
Stéf
Assez bien comme idée, sauf un petit souci, quand j'ai plusieurs valeurs
identique pour un type, la 1er requête n'en retient qu'une, se qui fausse la
somme dans la 2ème requête croisé.
Dommage c'était vraiment bien, t'as une solution ? :-)
De mon coté j'ai essayé différente solution inspiré de ton principe, mais
pas assez doué pfff

J'ai aussi une autre piste, comme mes données viennent d'un tableau Excel,
il y aurai moins de souci si on arrive à mettre chaque type dans une colonne
distingue. J'ai bien une idée dans Excel. Dans Access, c'est peut être
possible de faire une macro qui re ferait une table restructuré. Mais bon,
on essaye d'abord en requête "directe" :-)

"Michel__D" a écrit dans le message de
news:
Bonjour,

Stéf a écrit :
Bonjour,

Je cherche a faire une somme des nombres en fonction de leur type pour un
même nom.
J'ai donc une table avec 7 colonnes, dont il existe 3 possibilités de
type.
nom, type1, valeur1, type2, valeur2, type3, valeur3

j'ai donc créer un requête pour faire la somme de valeur1 qui on le même
type1, et ainsi de suite pour chaque type.

Je sais donc faire une requête de regroupement par nom pour avoir le
total
de valeur pour un type.
J'ai bien essayé de faire la somme de deux requêtes, mais suis pas assez
doué pour faire cela, j'obtient plusieurs somme pour un même nom.

Mon souci, c'est que je n'arrive pas à faire la somme des valeurs d'un
certain type quand il se trouve dans différentes colonnes pour un même
nom.

voici pour exemple mes données :

nom - type1 - valeur1 - type2 - valeur2 - type3 - valeur3
marc - rouge - 4 - bleu - 55 - vert - 7
Alain - bleu - 44
Fred - rouge - 8 - bleu - 9
marc - vert - 8
Alain - rouge - 88 - bleu - 41

Et ainsi obtenir un résultat de :

alain rouge 88 - bleu 85 - vert 0
marc rouge 4 - bleu 55 - vert 15
fred rouge 8 - bleu 0 - vert 0


Merci



A essayer en 2 requêtes; une requête union pour rassembler les données :

SELECT T.nom, T.type1 AS type, T.valeur1 AS valeur
FROM LaTable AS T
UNION
SELECT T.nom, T.type2, T.valeur2
FROM LaTable AS T
UNION
SELECT T.nom, T.type3, T.valeur3
FROM LaTable AS T;

Puis une requête d'analyse croisée pour le résultat final :

TRANSFORM Sum(R.valeur) AS valeur
SELECT R.nom
FROM LaRequeteUnion AS R
GROUP BY R.nom
PIVOT R.type;


Avatar
Michel__D
Bonjour,

Ben si tu ne détaille pas plus je (on) ne va pas pouvoir t'aider,
donne un exemple ou cela ne fonctionne pas.


Stéf a écrit :
Assez bien comme idée, sauf un petit souci, quand j'ai plusieurs valeurs
identique pour un type, la 1er requête n'en retient qu'une, se qui
fausse la somme dans la 2ème requête croisé.
Dommage c'était vraiment bien, t'as une solution ? :-)
De mon coté j'ai essayé différente solution inspiré de ton principe,
mais pas assez doué pfff

J'ai aussi une autre piste, comme mes données viennent d'un tableau
Excel, il y aurai moins de souci si on arrive à mettre chaque type dans
une colonne distingue. J'ai bien une idée dans Excel. Dans Access, c'est
peut être possible de faire une macro qui re ferait une table
restructuré. Mais bon, on essaye d'abord en requête "directe" :-)

"Michel__D" a écrit dans le
message de news:
Bonjour,

Stéf a écrit :
Bonjour,

Je cherche a faire une somme des nombres en fonction de leur type
pour un
même nom.
J'ai donc une table avec 7 colonnes, dont il existe 3 possibilités de
type.
nom, type1, valeur1, type2, valeur2, type3, valeur3

j'ai donc créer un requête pour faire la somme de valeur1 qui on le même
type1, et ainsi de suite pour chaque type.

Je sais donc faire une requête de regroupement par nom pour avoir le
total
de valeur pour un type.
J'ai bien essayé de faire la somme de deux requêtes, mais suis pas assez
doué pour faire cela, j'obtient plusieurs somme pour un même nom.

Mon souci, c'est que je n'arrive pas à faire la somme des valeurs d'un
certain type quand il se trouve dans différentes colonnes pour un
même nom.

voici pour exemple mes données :

nom - type1 - valeur1 - type2 - valeur2 - type3 - valeur3
marc - rouge - 4 - bleu - 55 - vert - 7
Alain - bleu - 44
Fred - rouge - 8 - bleu - 9
marc - vert - 8
Alain - rouge - 88 - bleu - 41

Et ainsi obtenir un résultat de :

alain rouge 88 - bleu 85 - vert 0
marc rouge 4 - bleu 55 - vert 15
fred rouge 8 - bleu 0 - vert 0


Merci



A essayer en 2 requêtes; une requête union pour rassembler les données :

SELECT T.nom, T.type1 AS type, T.valeur1 AS valeur
FROM LaTable AS T
UNION
SELECT T.nom, T.type2, T.valeur2
FROM LaTable AS T
UNION
SELECT T.nom, T.type3, T.valeur3
FROM LaTable AS T;

Puis une requête d'analyse croisée pour le résultat final :

TRANSFORM Sum(R.valeur) AS valeur
SELECT R.nom
FROM LaRequeteUnion AS R
GROUP BY R.nom
PIVOT R.type;





Avatar
Stéf
OK
si table :
marc 2 rouge 5 vert
marc 2 rouge 6 vert
marc 1 rouge

dans la 1er requête on obtient
nom type valeur
marc rouge 2
marc rouge 1
marc vert 5
marc vert 6

et la 2ème requête donne alors
nom - rouge - vert
marc - 3 - 11

Ainsi la somme de rouge n'est pas juste, puique la somme est de 5 et non 3

il faudrait obtenir dans la 1er requête :
marc rouge 2
marc rouge 2
marc rouge 1
marc vert 5
marc vert 6



"Michel__D" a écrit dans le message de
news:
Bonjour,

Ben si tu ne détaille pas plus je (on) ne va pas pouvoir t'aider,
donne un exemple ou cela ne fonctionne pas.


Stéf a écrit :
Assez bien comme idée, sauf un petit souci, quand j'ai plusieurs valeurs
identique pour un type, la 1er requête n'en retient qu'une, se qui fausse
la somme dans la 2ème requête croisé.
Dommage c'était vraiment bien, t'as une solution ? :-)
De mon coté j'ai essayé différente solution inspiré de ton principe, mais
pas assez doué pfff

J'ai aussi une autre piste, comme mes données viennent d'un tableau
Excel, il y aurai moins de souci si on arrive à mettre chaque type dans
une colonne distingue. J'ai bien une idée dans Excel. Dans Access, c'est
peut être possible de faire une macro qui re ferait une table
restructuré. Mais bon, on essaye d'abord en requête "directe" :-)

"Michel__D" a écrit dans le message
de news:
Bonjour,

Stéf a écrit :
Bonjour,

Je cherche a faire une somme des nombres en fonction de leur type pour
un
même nom.
J'ai donc une table avec 7 colonnes, dont il existe 3 possibilités de
type.
nom, type1, valeur1, type2, valeur2, type3, valeur3

j'ai donc créer un requête pour faire la somme de valeur1 qui on le
même
type1, et ainsi de suite pour chaque type.

Je sais donc faire une requête de regroupement par nom pour avoir le
total
de valeur pour un type.
J'ai bien essayé de faire la somme de deux requêtes, mais suis pas
assez
doué pour faire cela, j'obtient plusieurs somme pour un même nom.

Mon souci, c'est que je n'arrive pas à faire la somme des valeurs d'un
certain type quand il se trouve dans différentes colonnes pour un même
nom.

voici pour exemple mes données :

nom - type1 - valeur1 - type2 - valeur2 - type3 - valeur3
marc - rouge - 4 - bleu - 55 - vert - 7
Alain - bleu - 44
Fred - rouge - 8 - bleu - 9
marc - vert - 8
Alain - rouge - 88 - bleu - 41

Et ainsi obtenir un résultat de :

alain rouge 88 - bleu 85 - vert 0
marc rouge 4 - bleu 55 - vert 15
fred rouge 8 - bleu 0 - vert 0


Merci



A essayer en 2 requêtes; une requête union pour rassembler les données :

SELECT T.nom, T.type1 AS type, T.valeur1 AS valeur
FROM LaTable AS T
UNION
SELECT T.nom, T.type2, T.valeur2
FROM LaTable AS T
UNION
SELECT T.nom, T.type3, T.valeur3
FROM LaTable AS T;

Puis une requête d'analyse croisée pour le résultat final :

TRANSFORM Sum(R.valeur) AS valeur
SELECT R.nom
FROM LaRequeteUnion AS R
GROUP BY R.nom
PIVOT R.type;







Avatar
Michel__D
Bonjour,

Dans ce cas essaye comme ceci :

SELECT T.nom, T.type1 AS type, Sum(T.valeur1) AS valeur
FROM LaTable AS T
GROUP BY T.nom, T.type1
UNION
SELECT T.nom, T.type2, Sum(T.valeur2)
FROM LaTable AS T
GROUP BY T.nom, T.type2
UNION
SELECT T.nom, T.type3, Sum(T.valeur3)
FROM LaTable AS T
GROUP BY T.nom, T.type3;


Stéf a écrit :
OK
si table :
marc 2 rouge 5 vert
marc 2 rouge 6 vert
marc 1 rouge

dans la 1er requête on obtient
nom type valeur
marc rouge 2
marc rouge 1
marc vert 5
marc vert 6

et la 2ème requête donne alors
nom - rouge - vert
marc - 3 - 11

Ainsi la somme de rouge n'est pas juste, puique la somme est de 5 et non 3

il faudrait obtenir dans la 1er requête :
marc rouge 2
marc rouge 2
marc rouge 1
marc vert 5
marc vert 6



"Michel__D" a écrit dans le
message de
news:
Bonjour,

Ben si tu ne détaille pas plus je (on) ne va pas pouvoir t'aider,
donne un exemple ou cela ne fonctionne pas.


Stéf a écrit :
Assez bien comme idée, sauf un petit souci, quand j'ai plusieurs valeurs
identique pour un type, la 1er requête n'en retient qu'une, se qui
fausse
la somme dans la 2ème requête croisé.
Dommage c'était vraiment bien, t'as une solution ? :-)
De mon coté j'ai essayé différente solution inspiré de ton principe,
mais
pas assez doué pfff

J'ai aussi une autre piste, comme mes données viennent d'un tableau
Excel, il y aurai moins de souci si on arrive à mettre chaque type dans
une colonne distingue. J'ai bien une idée dans Excel. Dans Access, c'est
peut être possible de faire une macro qui re ferait une table
restructuré. Mais bon, on essaye d'abord en requête "directe" :-)

"Michel__D" a écrit dans le
message
de news:
Bonjour,

Stéf a écrit :
Bonjour,

Je cherche a faire une somme des nombres en fonction de leur type pour
un
même nom.
J'ai donc une table avec 7 colonnes, dont il existe 3 possibilités de
type.
nom, type1, valeur1, type2, valeur2, type3, valeur3

j'ai donc créer un requête pour faire la somme de valeur1 qui on le
même
type1, et ainsi de suite pour chaque type.

Je sais donc faire une requête de regroupement par nom pour avoir le
total
de valeur pour un type.
J'ai bien essayé de faire la somme de deux requêtes, mais suis pas
assez
doué pour faire cela, j'obtient plusieurs somme pour un même nom.

Mon souci, c'est que je n'arrive pas à faire la somme des valeurs d'un
certain type quand il se trouve dans différentes colonnes pour un même
nom.

voici pour exemple mes données :

nom - type1 - valeur1 - type2 - valeur2 - type3 - valeur3
marc - rouge - 4 - bleu - 55 - vert - 7
Alain - bleu - 44
Fred - rouge - 8 - bleu - 9
marc - vert - 8
Alain - rouge - 88 - bleu - 41

Et ainsi obtenir un résultat de :

alain rouge 88 - bleu 85 - vert 0
marc rouge 4 - bleu 55 - vert 15
fred rouge 8 - bleu 0 - vert 0


Merci



A essayer en 2 requêtes; une requête union pour rassembler les
données :

SELECT T.nom, T.type1 AS type, T.valeur1 AS valeur
FROM LaTable AS T
UNION
SELECT T.nom, T.type2, T.valeur2
FROM LaTable AS T
UNION
SELECT T.nom, T.type3, T.valeur3
FROM LaTable AS T;

Puis une requête d'analyse croisée pour le résultat final :

TRANSFORM Sum(R.valeur) AS valeur
SELECT R.nom
FROM LaRequeteUnion AS R
GROUP BY R.nom
PIVOT R.type;










Avatar
Stéf
Super ! tout me semble parfais, nickel chrome :-)


Un grand merci a toi, je vais pourvoir progresser

Stéf

"Michel__D" a écrit dans le message de
news:%
Bonjour,

Dans ce cas essaye comme ceci :

SELECT T.nom, T.type1 AS type, Sum(T.valeur1) AS valeur
FROM LaTable AS T
GROUP BY T.nom, T.type1
UNION
SELECT T.nom, T.type2, Sum(T.valeur2)
FROM LaTable AS T
GROUP BY T.nom, T.type2
UNION
SELECT T.nom, T.type3, Sum(T.valeur3)
FROM LaTable AS T
GROUP BY T.nom, T.type3;


Stéf a écrit :
OK
si table :
marc 2 rouge 5 vert
marc 2 rouge 6 vert
marc 1 rouge

dans la 1er requête on obtient
nom type valeur
marc rouge 2
marc rouge 1
marc vert 5
marc vert 6

et la 2ème requête donne alors
nom - rouge - vert
marc - 3 - 11

Ainsi la somme de rouge n'est pas juste, puique la somme est de 5 et non
3

il faudrait obtenir dans la 1er requête :
marc rouge 2
marc rouge 2
marc rouge 1
marc vert 5
marc vert 6



"Michel__D" a écrit dans le message
de
news:
Bonjour,

Ben si tu ne détaille pas plus je (on) ne va pas pouvoir t'aider,
donne un exemple ou cela ne fonctionne pas.


Stéf a écrit :
Assez bien comme idée, sauf un petit souci, quand j'ai plusieurs
valeurs
identique pour un type, la 1er requête n'en retient qu'une, se qui
fausse
la somme dans la 2ème requête croisé.
Dommage c'était vraiment bien, t'as une solution ? :-)
De mon coté j'ai essayé différente solution inspiré de ton principe,
mais
pas assez doué pfff

J'ai aussi une autre piste, comme mes données viennent d'un tableau
Excel, il y aurai moins de souci si on arrive à mettre chaque type dans
une colonne distingue. J'ai bien une idée dans Excel. Dans Access,
c'est
peut être possible de faire une macro qui re ferait une table
restructuré. Mais bon, on essaye d'abord en requête "directe" :-)

"Michel__D" a écrit dans le
message
de news:
Bonjour,

Stéf a écrit :
Bonjour,

Je cherche a faire une somme des nombres en fonction de leur type
pour
un
même nom.
J'ai donc une table avec 7 colonnes, dont il existe 3 possibilités de
type.
nom, type1, valeur1, type2, valeur2, type3, valeur3

j'ai donc créer un requête pour faire la somme de valeur1 qui on le
même
type1, et ainsi de suite pour chaque type.

Je sais donc faire une requête de regroupement par nom pour avoir le
total
de valeur pour un type.
J'ai bien essayé de faire la somme de deux requêtes, mais suis pas
assez
doué pour faire cela, j'obtient plusieurs somme pour un même nom.

Mon souci, c'est que je n'arrive pas à faire la somme des valeurs
d'un
certain type quand il se trouve dans différentes colonnes pour un
même
nom.

voici pour exemple mes données :

nom - type1 - valeur1 - type2 - valeur2 - type3 - valeur3
marc - rouge - 4 - bleu - 55 - vert - 7
Alain - bleu - 44
Fred - rouge - 8 - bleu - 9
marc - vert - 8
Alain - rouge - 88 - bleu - 41

Et ainsi obtenir un résultat de :

alain rouge 88 - bleu 85 - vert 0
marc rouge 4 - bleu 55 - vert 15
fred rouge 8 - bleu 0 - vert 0


Merci



A essayer en 2 requêtes; une requête union pour rassembler les données
:

SELECT T.nom, T.type1 AS type, T.valeur1 AS valeur
FROM LaTable AS T
UNION
SELECT T.nom, T.type2, T.valeur2
FROM LaTable AS T
UNION
SELECT T.nom, T.type3, T.valeur3
FROM LaTable AS T;

Puis une requête d'analyse croisée pour le résultat final :

TRANSFORM Sum(R.valeur) AS valeur
SELECT R.nom
FROM LaRequeteUnion AS R
GROUP BY R.nom
PIVOT R.type;