J’espère que vous pourrez m’aider car je ne trouve rien de bien précis en ce qui concerne mon problème.
Voilà, Je fais beaucoup de requête SQL et bien souvent je suis dans l’obligation de traiter le résultat via un tableau croisé dynamique dans Excel pour regrouper tout cela car je n’arrive pas à “aligner” mes résultats dans ma requête.
Comme je pense que ce n’est pas clair, voici un exemple concret :
SELECT societe, SUM(ca_client), 0, 0
WHERE annee = 2008
GROUP BY societe
UNION
SELECT societe, 0, SUM(ca_client), 0
WHERE annee = 2009
GROUP BY societe
UNION
SELECT societe, 0, 0, SUM(ca_client)
WHERE annee = 2010
GROUP BY societe
ORDER BY societe
Aujourd’hui ce code va me donner 3 lignes à chaque fois : 1 par année. Moi je voudrai une seule ligne avec la somme de 2008, 2009 et 2010.
D’où ma question : est-ce possible ?
Si oui, où je me plante ?
techniquement c’est possible, mais cela va donner des requêtes imbriqués dans la 1ére (ce qui n’est pas très optimal), alors soit tu peux le faire dans un boucle pour avoir plusieurs appel léger (je sais pas si ta requête s’effectue dans un script ou si c’est juste une requête que tu affiches directement), ce qui me semble plus intéressant soit il te faut absolument une seule requête et cela donne un truc du genre :
SELECT societe s,
(SELECT SUM(ca_client) WHERE annee = 2008 AND societe = s GROUP BY societe) CA08,
(SELECT SUM(ca_client) WHERE annee = 2009 AND societe = s GROUP BY societe) CA09,
(SELECT SUM(ca_client) WHERE annee = 2010 AND societe = s GROUP BY societe) CA10
Beurk!!! Que c’est pas propre comme code!!! Mais cela doit fonctionner mais si le contenue de tes tables est conséquent cela va être hyper lent et lourd
Effectivement, tu voulais les données en colonne, pas en ligne.
Mais vu que tu utilises Excel, tu pourrais très bien envisager de faire une transposée de ton ResultSet, et du coup, ça reviendrai plus ou moins au même.
Pour info j’utilise soit SQL-View, soit directement des requêtes via Microsoft Query dans Excel même. Je crois que la méthode donnée par Sans-Nom est plus optimisée et je continuerai à utiliser les TCD, après tout, c’est pas la mort