Simplification de requête - SQL/NoSQL - Programmation
Marsh Posté le 07-09-2009 à 23:05:02
Si tu souhaites rassembler les résultats de plusieurs lignes sur une seule, ca ne va pas être facile en SQL standard. Faudrait voir s'il existe un équivalent en Access de la fonction GROUP_CONCAT de MySQL
Marsh Posté le 08-09-2009 à 16:14:26
Merci pour ta réponse.
Je n'ai jamais trouvé cet équivalent
Et Access ne permet pas de faire des curseurs (ou alors il me le cache bien )
Marsh Posté le 15-09-2009 à 13:41:59
Code :
|
Comme çà ?
Edit : Apparemment Access ne connait pas le "case when" (no comment), il faut donc remplacer par des IIF(expression,vrai,faux)
Donc comme çà :
Code :
|
Je n'ai pas testé, je n'ai pas de base Access sous la main (et je n'en veux pas )
Marsh Posté le 15-09-2009 à 16:23:04
J'ai juste du rajouter les virgules à la fin de chaque sum mais ça a l'air nickel ! Le temps de finir les derniers tests, mais pour l'instant c'est plus que concluant
MERCI !
Marsh Posté le 04-09-2009 à 13:54:59
Bonjour,
voici un requête faites sous Access :
SELECT employe, Date,
(SELECT Sum(ValeurCalculee) FROM StatCalc a WHERE ID_Cpt In (9,12) AND a.Employe = s.employe AND a.Date = s.Date ) AS Cpt1,
(SELECT ValeurCalculee FROM StatCalc b WHERE ID_Cpt =10 AND b.Employe = s.employe AND b.Date = s.Date ) AS Cpt2,
(SELECT ValeurCalculee FROM StatCalc c WHERE ID_Cpt =11 AND c.Employe = s.employe AND c.Date = s.Date ) AS Cpt3,
(SELECT ValeurCalculee FROM StatCalc d WHERE ID_Cpt =7 AND d.Employe = s.employe AND d.Date = s.Date ) AS Cpt4,
(SELECT ValeurCalculee FROM StatCalc e WHERE ID_Cpt =51 AND e.Employe = s.employe AND e.Date = s.Date ) AS Cpt5,
(SELECT ValeurCalculee FROM StatCalc f WHERE ID_Cpt =46 AND f.Employe = s.employe AND f.Date = s.Date ) AS Cpt6,
(SELECT ValeurCalculee FROM StatCalc g WHERE ID_Cpt =14 AND g.Employe = s.employe AND g.Date = s.Date ) AS Cpt7,
(SELECT ValeurCalculee FROM StatCalc h WHERE ID_Cpt =47 AND h.Employe = s.employe AND h.Date = s.Date ) AS Cpt8,
(SELECT ValeurCalculee FROM StatCalc i WHERE ID_Cpt =53 AND i.Employe = s.employe AND i.Date = s.Date ) AS Cpt9,
(SELECT ValeurCalculee FROM StatCalc j WHERE ID_Cpt =16 AND j.Employe = s.employe AND j.Date = s.Date ) AS Cpt10
FROM StatCalc AS s
WHERE employe In (1,248)
GROUP BY Employe,Date;
Elle est assez simple à comprendre. On a une table StatCalc, composée de 4 champs (Employe, Date, Compteur, Valeur), qui donne une valeur a un compteur pour une date et un employé donnés.
Mon but est donc de choisir 10 compteurs et de faire une requete qui donne le tout en ligne.
Cette requête est super longue, auriez vous un moyen de diminuer tout ça svp ?