Maison >base de données >tutoriel mysql >Comment faire pivoter dynamiquement les lignes MySQL en colonnes ?

Comment faire pivoter dynamiquement les lignes MySQL en colonnes ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-25 13:12:16783parcourir

How to Dynamically Pivot MySQL Rows into Columns?

MySQL Dynamic Row Operation

Question:

Focus des données de plusieurs tables et les formant dans une table en perspective de colonnes dynamiques, même si vous ne connaissez pas le nombre exact de colonnes à l'avance.

Requête originale:

Utilisation d'une solution d'instruction de cas:

<code class="language-sql">SELECT partners.name, products.name, COUNT(*) 
FROM sales
JOIN products ON sales.products_id = products.id
JOIN partners ON sales.partners_id = partners.id
GROUP BY sales.partners_id, sales.products_id
LIMIT 0, 30</code>
MySQL n'a pas la fonction de pivot, vous devez donc utiliser une fonction polymère avec une instruction de cas:

La table de perspective dynamique de l'utilisation de l'instruction de pré-procédure:

Afin de gérer le titre de colonne dynamique, vous pouvez utiliser l'instruction de pré-procédure:
<code class="language-sql">select pt.partner_name,
  count(case when pd.product_name = 'Product A' THEN 1 END) as ProductA,
  count(case when pd.product_name = 'Product B' THEN 1 END) as ProductB,
  count(case when pd.product_name = 'Product C' THEN 1 END) as ProductC,
  count(case when pd.product_name = 'Product D' THEN 1 END) as ProductD,
  count(case when pd.product_name = 'Product E' THEN 1 END) as ProductE
from partners pt
left join sales s
  on pt.part_id = s.partner_id
left join products pd
  on s.product_id = pd.prod_id
group by pt.partner_name</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn