Comment renvoyer la sortie du tableau croisé dynamique dans MySQL ?
P粉926174288
2023-08-23 20:25:28
<p>Si j'ai une table MySQL qui ressemble à ceci : </p>
Nombre de pages de l'action <pre>company_name
----------------------------------
ENTREPRISE A IMPRIMER 3
ENTREPRISE A IMPRIMER 2
ENTREPRISE A IMPRIMER 3
Société BEMAIL
Société B PRINT 2
Société B PRINT 2
SOCIÉTÉ B IMPRIMER 1
ENTREPRISE A IMPRIMER 3
≪/pré>
<p>Est-il possible d'exécuter une requête MySQL pour obtenir un résultat comme celui-ci : </p>
<pre>nom_entreprise EMAIL IMPRIMER 1 pages IMPRIMER 2 pages IMPRIMER 3 pages
-------------------------------------------------- ----------
SociétéA 0 0 1 3
EntrepriseB 1 1 2 0
≪/pré>
<p>L'idée est que <code>pagecount</code> peut varier, donc le nombre de colonnes de sortie doit refléter cela, pour chaque <code>action</code>/<code>pagecount</code> Pour une colonne, indiquez le nombre de clics pour chaque <code>company_name</code>. Je ne sais pas si cela s'appelle un tableau croisé dynamique, mais est-ce que quelqu'un l'a suggéré ? </p>
Ma solution est d'utiliser T-SQL sans aucun pivot :
Il s’agit essentiellement d’un tableau croisé dynamique.
Un bon tutoriel sur la façon de mettre en œuvre cela peut être trouvé ici : http:///www.artfulsoftware.com/infotree/qrytip.php?id=78
Je vous recommande de lire cet article et d'adapter cette solution à vos besoins.
Mise à jour
Après que le lien ci-dessus n'est actuellement plus disponible, j'ai ressenti le besoin de fournir des informations supplémentaires à tous ceux qui recherchent ici des réponses au hub MySQL. Il contient une tonne d'informations, je ne les mettrai pas toutes ici (ni même plus, car je ne veux tout simplement pas reproduire leurs vastes connaissances), mais je donnerai quelques conseils sur la façon de gérer les pivots en général. dans le tableau des méthodes SQL, en prenant comme exemple le peku qui a posé la question en premier.
Peut-être que le lien reviendra bientôt, je garderai un œil ouvert.
Méthode tableur...
De nombreuses personnes utilisent simplement MSExcel, OpenOffice ou d'autres outils de feuille de calcul à cette fin. C'est une solution valable, copiez simplement les données là-bas et utilisez les outils fournis par l'interface graphique pour résoudre le problème.
Mais... ce n'est pas un problème, cela peut même entraîner certains inconvénients comme la façon d'introduire les données dans la feuille de calcul, des problèmes de mise à l'échelle, etc.
Façon SQL...
Étant donné que son formulaire ressemble à ceci :
Voir le formulaire qu'il souhaite maintenant :
OK (
电子邮件
、打印 x 页
)类似于条件。主要分组是按company_name
.Pour définir des conditions, vous devez utiliser la déclaration CASE. Pour regrouper par quelque chose, utilisez...
GROUP BY
GROUP BY
.Le SQL de base pour fournir ce pivot pourrait ressembler à ceci :
Cela devrait fournir les résultats souhaités très rapidement. Le principal inconvénient de cette approche est que plus vous souhaitez de lignes dans le tableau croisé dynamique, plus vous devez définir de conditions dans l'instruction SQL.
Cela peut également être géré, de sorte que les gens ont tendance à utiliser des déclarations préparées, des routines, des compteurs, etc.
Quelques autres liens sur ce sujet :