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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【spring】IoC原理[通俗易懂]

    【spring】IoC原理[通俗易懂]【spring】IoC原理

    2022年4月25日
    55
  • XSHELL安装指南

    XSHELL安装指南开发环境部署目的:利用ssh远程登陆服务器(在windows系统下远程连接linux)下载XSHELL7XSHELL7下载网址:https://www.netsarang.com/zh/xshell/点击“下载”点击“免费授权界面”以上是XSHELL7的下载过程然后找到右键“以管理员身份运行”一上来会出现这种错误,先点击“是(Y)”过程中一直点击“下一步”,以及“我同意”类似的,然后选择个安装路径就可以没啥特殊的。到最后一切顺利的话会显示下面这样的界面一般通向成功的道

    2025年6月17日
    2
  • java资源网站总汇[通俗易懂]

    java资源网站总汇[通俗易懂]java资源网: http://www.javaresource.org/ 

    2022年7月8日
    35
  • String和JSON互转,String生成JSONObject和JSONArray[通俗易懂]

    String和JSON互转,String生成JSONObject和JSONArray[通俗易懂]一、String转JSONvarstr='[{"name":"12"}]’;varjson1=eval(‘(‘+str+’)’);varjson2=JSON.parse(str);这个JSON.parse()与eval()都可以实现,但是它们是有区别的:JSON.parse对json字符串要求比eval()更为严格,key名称(例如name)全部必须有双引号。

    2022年8月23日
    56
  • mac idea 激活码_最新在线免费激活

    (mac idea 激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月30日
    185
  • [900]mysql字符串数字互转

    [900]mysql字符串数字互转字符串转数字最简单的方式就是直接在字符串后面+0,就相当于直接把字符串转为数字类型了,下面可以看一下具体的操作,可以看到通过+0操作,成功将两个字符串转化为了数字,并得到了相加后的结果。SELECT’123’+0+’123′;CAST()函数转化为整数使用CAST()函数,使用方式为CAST(valueAStype);,下面可以看一下具体的操作例子,通过如下sql语句查看结果:SELECTCAST(‘5.45’ASSIGNED);可以看到结果直接将字符串’5.45’转为了

    2022年5月22日
    35

发表回复

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

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