Maison >base de données >tutoriel mysql >Comment faire pivoter dynamiquement les lignes MySQL en colonnes ?
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:
<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!