MySql Povit_MySQL pivot row成动态列数「建议收藏」

MySql Povit_MySQL pivot row成动态列数「建议收藏」杨魅力不幸的是,MySQL没有PIVOT基本上你想要做的功能。因此,您需要使用带有CASE语句的聚合函数:selectpt.partner_name,count(casewhenpd.product_name=’ProductA’THEN1END)ProductA,count(casewhenpd.product_name=’ProductB’THEN1…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

c63f111078a805ab7d2a9f587e769298.png

杨魅力

不幸的是,MySQL没有PIVOT基本上你想要做的功能。因此,您需要使用带有CASE语句的聚合函数:select pt.partner_name,

  count(case when pd.product_name = ‘Product A’ THEN 1 END) ProductA,

  count(case when pd.product_name = ‘Product B’ THEN 1 END) ProductB,

  count(case when pd.product_name = ‘Product C’ THEN 1 END) ProductC,

  count(case when pd.product_name = ‘Product D’ THEN 1 END) ProductD,

  count(case when pd.product_name = ‘Product E’ THEN 1 END) ProductEfrom partners ptleft join sales s  

  on pt.part_id = s.partner_idleft join products pd  on s.product_id = pd.prod_idgroup by pt.partner_name请参阅SQL Fiddle with Demo由于您不了解产品,因此您可能希望动态执行此操作。这可以使用预先准备的语句来完成。动态数据透视表(将行转换为列)您的代码如下所示:SET @sql = NULL;SELECT

  GROUP_CONCAT(DISTINCT

    CONCAT(

      ‘count(case when Product_Name = ”’,

      Product_Name,

      ”’ then 1 end) AS ‘,

      replace(Product_Name, ‘ ‘, ”)

    )

  ) INTO @sqlfrom products;SET @sql = CONCAT(‘SELECT pt.partner_name, ‘, @sql, ‘ 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’);PREPARE stmt FROM @sql;EXECUTE stmt;DEALLOCATE PREPARE stmt;请参阅SQL Fiddle with Demo值得注意的GROUP_CONCAT是,默认情况下限制为1024字节。您可以通过在程序持续时间内将其设置得更高来解决此问题,即。SET @@group_concat_max_len = 32000;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227651.html原文链接:https://javaforall.net

(0)
上一篇 2025年6月20日 上午7:43
下一篇 2025年6月20日 上午8:15


相关推荐

  • 大模型小白指南系列2 — 小龙虾(openclaw)的本地部署(不花钱!)

    大模型小白指南系列2 — 小龙虾(openclaw)的本地部署(不花钱!)

    2026年3月13日
    2
  • quick-cocos2d-x android返回键监听并实现原生退出对话框

    quick-cocos2d-x android返回键监听并实现原生退出对话框

    2021年12月2日
    50
  • linux PHPstorm激活码破解方法

    linux PHPstorm激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    41
  • p2p网络传输协议

    p2p网络传输协议P2P是英文Peer-to-Peer(对等)的简称,又被称为“点对点”。“对等”技术,是一种网络新技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上。P2P还是英文PointtoPoint(点对点)的简称。它是下载术语,意思是在你自己下载的同时,自己的电脑还要继续做主机上传,这种下载方式,人越多速度越快但缺点是对硬盘损伤比较大(在写的同时还要读),还有对内存占用较…

    2022年7月16日
    31
  • 优秀ASP.NET程序员修炼之路

    初级的程序员或经验不足的程序员往往只意识到自己的程序是写给计算机的,而不会在意程序其实也是写给人的,或在意得不够、不全面。写给机器的程序,往往追求的是运行正确、执行效率能满足要求。但程序员的任务仅仅

    2021年12月25日
    48
  • vscode 和 pycharm

    vscode 和 pycharm代码编写工具介绍 vscodepychar 是微软一款开源的编写代码工具 它支持很多的编程语言 例如 PHP C C 等等 当然我们的 python 也不例外 那么我们先来看看它怎么安装吧传送门 vscode 官网 vscode 编写 python 的 3 个先决条件 1 安装下载 vscode2 安装插件 3 安装 python3 这个我们前面说过了 然后选择你的 python 解释器 就可以开始编写我们的 python 代码了 pycharmpycha 是专为开发 python 而存在的一款

    2026年3月27日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号