Forum des développeurs  

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é.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Défis

Défis Ce forum est celui des défis et challenges Office. Prêts à relever le gant ? C'est parti !

Réponse
 
Outils de la discussion
Vieux 16/11/2006, 10h12   #1 (permalink)
Rédacteur

 
Avatar de Tofalu
 
Date d'inscription: octobre 2004
Localisation: Mâcon
Messages: 5 851
Par défaut Un petit défi de requête Access par la rédaction

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
A vous de jouer
Tofalu est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/11/2006, 10h26   #2 (permalink)
Membre expérimenté
 
Date d'inscription: janvier 2006
Messages: 579
Par défaut

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
Je sais pas s'il faudrait pas des sum quelque part ...
Mais à mon avis c'est une bonne base.

Dernière modification par Lou Pitchoun ; 16/11/2006 à 10h39 Motif: Modification balises [code] => [code=SQL]
Kloun est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/11/2006, 10h32   #3 (permalink)
Rédacteur

 
Avatar de Tofalu
 
Date d'inscription: octobre 2004
Localisation: Mâcon
Messages: 5 851
Par défaut

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
Tofalu est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/11/2006, 10h38   #4 (permalink)
Membre expérimenté
 
Date d'inscription: janvier 2006
Messages: 579
Par défaut

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;
Et là, ça donne bien les résultats demandés.

Dernière modification par Lou Pitchoun ; 16/11/2006 à 10h40 Motif: Modification balises [code] => [code=SQL]
Kloun est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/11/2006, 10h47   #5 (permalink)
Rédacteur

 
Avatar de Tofalu
 
Date d'inscription: octobre 2004
Localisation: Mâcon
Messages: 5 851
Par défaut

Oui mais tu as toujours les UNION.

Beaucoup trop gourmand. J'aimerais vraiment qu'on ne lise qu'une seule fois la table
Tofalu est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/11/2006, 10h49   #6 (permalink)
Rédacteur/Modérateur
 
Avatar de Arkham46
 
Date d'inscription: septembre 2003
Messages: 2 535
Par défaut



je peux jouer aussi moi?
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/11/2006, 10h51   #7 (permalink)
Responsable MSOffice
 
Avatar de Lou Pitchoun
 
Date d'inscription: février 2005
Localisation: Au soleil, Made In Marseille
Âge: 30
Messages: 5 093
Envoyer un message via MSN à Lou Pitchoun
Par défaut

Citation:
Envoyé par Arkham46


je peux jouer aussi moi?
Nan, tu es hors catégories

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 Le complément BouleDeCristal n'existe pas encore !!!
Lou Pitchoun est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/11/2006, 10h52   #8 (permalink)
Rédacteur/Modérateur

 
Avatar de cafeine
 
Date d'inscription: juin 2002
Localisation: derrière le moniteur
Messages: 3 743
Par défaut

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
Déjà 12 tutoriels, le dernier en date : Comment faire un TextBox auto-extensible dans un formulaire ?


cafeine est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/11/2006, 11h09   #9 (permalink)
Rédacteur

 
Avatar de Tofalu
 
Date d'inscription: octobre 2004
Localisation: Mâcon
Messages: 5 851
Par défaut



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.
Tofalu est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/11/2006, 11h16   #10 (permalink)
Responsable Outlook
 
Avatar de Dolphy35
 
Date d'inscription: octobre 2004
Localisation: Rennes
Messages: 3 275
Envoyer un message via MSN à Dolphy35 Envoyer un message via Skype™ à Dolphy35
Par défaut

Citation:
Envoyé par Tofalu
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.
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
venez défier mabrute
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/11/2006, 11h18   #11 (permalink)
Responsable MSOffice
 
Avatar de Lou Pitchoun
 
Date d'inscription: février 2005
Localisation: Au soleil, Made In Marseille
Âge: 30
Messages: 5 093
Envoyer un message via MSN à Lou Pitchoun
Par défaut

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 Le complément BouleDeCristal n'existe pas encore !!!
Lou Pitchoun est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/11/2006, 11h20   #12 (permalink)
Rédacteur

 
Avatar de Tofalu
 
Date d'inscription: octobre 2004
Localisation: Mâcon
Messages: 5 851
Par défaut

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
Tofalu est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/11/2006, 11h43   #13 (permalink)
Rédacteur/Modérateur

 
Avatar de cafeine
 
Date d'inscription: juin 2002
Localisation: derrière le moniteur
Messages: 3 743
Par défaut

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
Déjà 12 tutoriels, le dernier en date : Comment faire un TextBox auto-extensible dans un formulaire ?


cafeine est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/11/2006, 11h51   #14 (permalink)
Rédacteur

 
Avatar de Tofalu
 
Date d'inscription: octobre 2004
Localisation: Mâcon
Messages: 5 851
Par défaut

Citation:
Envoyé par cafeine
Qu'est-ce que tu appelles "justification du calcul" ?

Cafeine, donne la réponse avant et je te poserais la question plus explicitement.
Tofalu est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/11/2006, 11h56   #15 (permalink)
Rédacteur/Modérateur

 
Avatar de cafeine
 
Date d'inscription: juin 2002
Localisation: derrière le moniteur
Messages: 3 743
Par défaut

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
Déjà 12 tutoriels, le dernier en date : Comment faire un TextBox auto-extensible dans un formulaire ?


cafeine est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Défis

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide