Requête cumul Access
Fermé
lovidia
Messages postés
1
Date d'inscription
mercredi 29 juin 2011
Statut
Membre
Dernière intervention
29 juin 2011
-
29 juin 2011 à 22:02
java4ever - 2 juil. 2011 à 22:57
java4ever - 2 juil. 2011 à 22:57
A voir également:
- Requête cumul Access
- Access appdata - Guide
- Acer quick access - Forum Logiciels
- Exemple base de données access à télécharger gratuit ✓ - Forum Logiciels
- Acer Quick Access - affichage CapsLock, VerrNum - Forum logiciel systeme
- Controller access network - Télécharger - Contrôle parental
1 réponse
Bonjour,
L'énoncé de ton problème n'étant pas très précis, j'ai imaginé le contexte suivant :
Un table "facture" contient au moins une colonne "date_fac" et une colonne "montant_fac".
J'ai supposé que tu voulais une requête qui donne, en une seule ligne, le cumul des CA pour chacun des 12 mois de l'année.
Si tu ne connais pas, je te laisse apprécier la mage des tables pivot !
Solution : créer une table pivot qui contient 12 lignes, une par mois avec une colonne contenant le mois à cumuler et 12 colonnes qui contiennent un "1" si le montant d'une facture doit être additionné pour le mois de la colonne, 0 sinon.
Voici la requête sous mysql (adapter la fonction MONTH() pour Access, je crois que c'est FORMAT("yyy",dateConcernee) :
Le script pour créer la table pivot :
Pour le remplissage de pivot, moi je l'ai fait en java avec JPA, mais je pense que c'est hors sujet pour toi, donc voici l'export en mode sql pour insérer les lignes :
Ne t'inquiète pas les mois ne sont pas dans l'ordre, mais ça na aucune importance car la requete nomme les colonnes
Bon travail en espérant que je ne suis pas hors sujet
Ha, et voici mon insert pour la table facture :
L'énoncé de ton problème n'étant pas très précis, j'ai imaginé le contexte suivant :
Un table "facture" contient au moins une colonne "date_fac" et une colonne "montant_fac".
J'ai supposé que tu voulais une requête qui donne, en une seule ligne, le cumul des CA pour chacun des 12 mois de l'année.
Si tu ne connais pas, je te laisse apprécier la mage des tables pivot !
Solution : créer une table pivot qui contient 12 lignes, une par mois avec une colonne contenant le mois à cumuler et 12 colonnes qui contiennent un "1" si le montant d'une facture doit être additionné pour le mois de la colonne, 0 sinon.
Voici la requête sous mysql (adapter la fonction MONTH() pour Access, je crois que c'est FORMAT("yyy",dateConcernee) :
-- Requete utilisant une table pivot et une table de factures datée -- qui donne le CA cumulé sur les 12 mois de l'année en cours (Year(NOW)) SELECT 'Cumul des CA de facture par mois de l''année courante' from dual; SELECT SUM(facture.fac_montant*pivotfacture.janvier) AS CUM_JANVIER, SUM(facture.fac_montant*pivotfacture.fevrier) AS CUM_FEVRIER, SUM(facture.fac_montant*pivotfacture.mars) AS CUM_MARS, SUM(facture.fac_montant*pivotfacture.avril) AS CUM_AVRIL, SUM(facture.fac_montant*pivotfacture.mai) AS CUM_MAI, SUM(facture.fac_montant*pivotfacture.juin) AS CUM_JUIN, SUM(facture.fac_montant*pivotfacture.juillet) AS CUM_JUILLET, SUM(facture.fac_montant*pivotfacture.aout) AS CUM_AOUT, SUM(facture.fac_montant*pivotfacture.septembre) AS CUM_SEPTEMBRE, SUM(facture.fac_montant*pivotfacture.octobre) AS CUM_OCTOBRE, SUM(facture.fac_montant*pivotfacture.novembre) AS CUM_NOVEMBRE, SUM(facture.fac_montant*pivotfacture.decembre) AS CUM_DECEMBRE FROM facture, pivotfacture WHERE Month(facture.FAC_DATE) = pivotfacture.MOISCUMUL AND YEAR(facture.FAC_DATE) = YEAR(NOW())
Le script pour créer la table pivot :
CREATE TABLE 'pivotfacture' ( 'ID' bigint(20) NOT NULL, 'JUILLET' int(11) NOT NULL, 'AOUT' int(11) NOT NULL, 'AVRIL' int(11) NOT NULL, 'DECEMBRE' int(11) NOT NULL, 'JUIN' int(11) NOT NULL, 'OCTOBRE' int(11) NOT NULL, 'MAI' int(11) NOT NULL, 'MARS' int(11) NOT NULL, 'MOISCUMUL' int(11) NOT NULL, 'SEPTEMBRE' int(11) NOT NULL, 'JANVIER' int(11) NOT NULL, 'NOVEMBRE' int(11) NOT NULL, 'FEVRIER' int(11) NOT NULL, PRIMARY KEY ('ID') ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Pour le remplissage de pivot, moi je l'ai fait en java avec JPA, mais je pense que c'est hors sujet pour toi, donc voici l'export en mode sql pour insérer les lignes :
Ne t'inquiète pas les mois ne sont pas dans l'ordre, mais ça na aucune importance car la requete nomme les colonnes
Bon travail en espérant que je ne suis pas hors sujet
Ha, et voici mon insert pour la table facture :
INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-01-04', 100.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-02-04', 200.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-03-04', 300.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-04-04', 400.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-05-04', 500.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-06-04', 600.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-07-04', 700.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-08-04', 800.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-09-04', 900.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-10-04', 1000.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-11-04', 1100.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-12-04', 1200.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-01-10', 100.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-02-10', 200.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-03-10', 300.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-04-10', 400.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-05-10', 500.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-06-10', 600.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-07-10', 700.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-08-10', 800.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-09-10', 900.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-10-10', 1000.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-11-10', 1100.00); INSERT INTO FACTURE (FAC_DATE,FAC_MONTANT) VALUES ('2011-12-10', 1200.00);