![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| Défis Ce forum est celui des défis et challenges Office. Prêts à relever le gant ? C'est parti ! |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
![]() ![]() Date d'inscription: octobre 2004
Localisation: Mâcon
Messages: 5 851
|
Allez, une fois n'est pas coutume, je vous propose un petit défi.
Soit une table tblCA représentant le chiffre d'affaire de mes commerciaux par trimestre Code :
IdComm NumTrim CA 1 1 110 2 1 210 3 1 310 1 2 120 2 2 220 3 2 320 1 3 130 2 3 230 3 3 330 1 4 140 2 4 240 3 4 340 Je souhaite obtenir (sans VBA, ni analyse croisée) le tableau suivant : Code :
idComm T1 T2 T3 T4 1 110 120 130 140 2 210 220 230 240 3 310 320 330 340
__________________
Tutoriel : Gestion de favoris sous Access 2007 Cours : Manipulation des fichiers en VBA
|
|
|
|
|
|
#2 (permalink) |
|
Membre expérimenté
![]() Date d'inscription: janvier 2006
Messages: 579
|
Code SQL :
SELECT IdComm, CA AS T1, 0 AS T2, 0 AS T3 , 0 AS T4 FROM TblCA WHERE NumTrim = 1 Union SELECT IdComm, 0 AS T1, CA AS T2, 0 AS T3 , 0 AS T4 FROM TblCA WHERE NumTrim = 2 Union SELECT IdComm, 0 AS T1, 0 AS T2, CA AS T3 , 0 AS T4 FROM TblCA WHERE NumTrim = 3 Union SELECT IdComm, 0 AS T1, 0 AS T2, 0 AS T3 , CA AS T4 FROM TblCA WHERE NumTrim = 4 Mais à mon avis c'est une bonne base. Dernière modification par Lou Pitchoun ; 16/11/2006 à 10h39 Motif: Modification balises [code] => [code=SQL] |
|
|
|
|
|
#3 (permalink) |
![]() ![]() Date d'inscription: octobre 2004
Localisation: Mâcon
Messages: 5 851
|
Le soucis c'est que le union est très gourmand en ressources car il trie les résultats. De plus, là, tu balayes 4 fois la tables. Ceci dit, je pense que tu es sur la bonne piste à priori
__________________
Tutoriel : Gestion de favoris sous Access 2007 Cours : Manipulation des fichiers en VBA
|
|
|
|
|
|
#4 (permalink) |
|
Membre expérimenté
![]() Date d'inscription: janvier 2006
Messages: 579
|
En plus, par rapport à la première requête que j'ai donné (Req1), il faut en faire une 2nde :
Code SQL :
SELECT Req1.IdComm, Sum(Req1.T1) AS SommeDeT1, Sum(Req1.T2) AS SommeDeT2, Sum(Req1.T3) AS SommeDeT3, Sum(Req1.T4) AS SommeDeT4 FROM Req1 GROUP BY Req1.IdComm; Dernière modification par Lou Pitchoun ; 16/11/2006 à 10h40 Motif: Modification balises [code] => [code=SQL] |
|
|
|
|
|
#5 (permalink) |
![]() ![]() Date d'inscription: octobre 2004
Localisation: Mâcon
Messages: 5 851
|
Oui mais tu as toujours les UNION.
Beaucoup trop gourmand. J'aimerais vraiment qu'on ne lise qu'une seule fois la table
__________________
Tutoriel : Gestion de favoris sous Access 2007 Cours : Manipulation des fichiers en VBA
|
|
|
|
|
|
#7 (permalink) | |
![]() |
Citation:
![]() C'est de l'humour, tu peux participer
__________________
Responsable Office Futurs Modérateurs, Rédacteurs : We need you Access : Les Cours, Les Sources et Les FAQs Office Avant de poster : les choses importantes à lire pour la bonne tenue du forum.sinon Ma boite à MPs n'est pas l'annexe du forum |
|
|
|
|
|
|
#8 (permalink) |
![]() ![]() Date d'inscription: juin 2002
Localisation: derrière le moniteur
Messages: 3 743
|
Hello,
moi j'ai ça : Code SQL :
SELECT tblTest.idComm, Sum(IIf([tblTest]![NumTrim]=1,[tblTest]![CA],0)) AS T1, Sum(IIf([tblTest]![NumTrim]=2,[tblTest]![CA],0)) AS T2, Sum(IIf([tblTest]![NumTrim]=3,[tblTest]![CA],0)) AS T3, Sum(IIf([tblTest]![NumTrim]=4,[tblTest]![CA],0)) AS T4 FROM tblTest GROUP BY tblTest.idComm;
__________________
Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème ![]() Développez une application de gestion des comptes bancaires dans Access de A à Z ![]() |
|
|
|
|
|
#9 (permalink) |
![]() ![]() Date d'inscription: octobre 2004
Localisation: Mâcon
Messages: 5 851
|
![]() Juste un petit détail, je ne veux pas que ça m'affiche zéro pour les trimestres non renseignés. C'est à dire que si le commercial 3 n'a pas de données pour le trimestre 4, je ne veux rien dans cette colonne.
__________________
Tutoriel : Gestion de favoris sous Access 2007 Cours : Manipulation des fichiers en VBA
|
|
|
|
|
|
#10 (permalink) | |
![]() |
Citation:
Code sql :
SELECT tblTest.idComm, Sum(IIf([tblTest]![NumTrim]=1,[tblTest]![CA],Null)) AS T1, Sum(IIf([tblTest]![NumTrim]=2,[tblTest]![CA],Null)) AS T2, Sum(IIf([tblTest]![NumTrim]=3,[tblTest]![CA],Null)) AS T3, Sum(IIf([tblTest]![NumTrim]=4,[tblTest]![CA],Null)) AS T4 FROM tblTest GROUP BY tblTest.idComm; à cafeine
__________________
Initiation au VBA d'Outlook Je ne réponds pas aux questions techniques par MP
|
|
|
|
|
|
|
#11 (permalink) |
![]() |
gagné...
__________________
Responsable Office Futurs Modérateurs, Rédacteurs : We need you Access : Les Cours, Les Sources et Les FAQs Office Avant de poster : les choses importantes à lire pour la bonne tenue du forum.sinon Ma boite à MPs n'est pas l'annexe du forum |
|
|
|
|
|
#12 (permalink) |
![]() ![]() Date d'inscription: octobre 2004
Localisation: Mâcon
Messages: 5 851
|
Maintenant j'interdit la fonction Sum (y a pas grand chose à modifier lol). Ce que j'aimerais aussi c'est la justification du calcul à venir
__________________
Tutoriel : Gestion de favoris sous Access 2007 Cours : Manipulation des fichiers en VBA
|
|
|
|
|
|
#13 (permalink) |
![]() ![]() Date d'inscription: juin 2002
Localisation: derrière le moniteur
Messages: 3 743
|
Qu'est-ce que tu appelles "justification du calcul" ?
__________________
Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème ![]() Développez une application de gestion des comptes bancaires dans Access de A à Z ![]() |
|
|
|
|
|
#14 (permalink) | |
![]() ![]() Date d'inscription: octobre 2004
Localisation: Mâcon
Messages: 5 851
|
Citation:
Cafeine, donne la réponse avant et je te poserais la question plus explicitement.
__________________
Tutoriel : Gestion de favoris sous Access 2007 Cours : Manipulation des fichiers en VBA
|
|
|
|
|
|
|
#15 (permalink) |
![]() ![]() Date d'inscription: juin 2002
Localisation: derrière le moniteur
Messages: 3 743
|
ahahah,
je te le fais avec Max() (t'as pas dit qu'on n'avait pas le droit) Code SQL :
SELECT tblTest.idComm, Max(IIf([tblTest]![NumTrim]=1,[tblTest]![CA],NULL)) AS T1, Max(IIf([tblTest]![NumTrim]=2,[tblTest]![CA],NULL)) AS T2, Max(IIf([tblTest]![NumTrim]=3,[tblTest]![CA],NULL)) AS T3, Max(IIf([tblTest]![NumTrim]=4,[tblTest]![CA],NULL)) AS T4 FROM tblTest GROUP BY tblTest.idComm;
__________________
Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème ![]() Développez une application de gestion des comptes bancaires dans Access de A à Z ![]() |
|
|
|
![]() |
![]() |
||
Un petit défi de requête Access par la rédaction
|
||
| Outils de la discussion | |
|
|