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


相关推荐

  • java queryinterface_C++ COM编程之QueryInterface函数(一)

    java queryinterface_C++ COM编程之QueryInterface函数(一)前言组件对外公布的是接口;一个组件可以实现多个接口,也就是说可以对外公布多个接口,之前也总结过了,你很少会100%的去完全了解一个组件的所有接口,就像你去学习编程一样,你几乎不可能去成为编程中的全才。那么,既然我们不能去完全的了解一个组件提供的所有接口,那么我们在实际开发中,如何去判断一个组件是否提供对应的接口呢?看文档?是的,是个好主意,在文档的海洋,找到一个知识点,真的很难,浪费时间和精力;其…

    2022年7月23日
    9
  • 人工智能、云计算、大数据、物联网的关系是什么?「建议收藏」

    人工智能、云计算、大数据、物联网的关系是什么?「建议收藏」  人工智能、云计算、大数据、物联网的关系是什么?    提到智能技术大家首先联想到的就是人工智能、大数据、云计算、物联网等。而很多人对这些名词间的关系模棱两可。因此有必要首先介绍下其间的联系。为了便于读者理解,这里不引用每个名词的通用定义,而采用通俗易懂的方式进行解释。人工智能从狭义角度讲就是以CNN卷积神经网络为代表的模型算法,具体的应用图像识别和语音识别。  目前社会上…

    2022年10月7日
    1
  • 计算最长回文子串_用递归判断是否为回文字符串

    计算最长回文子串_用递归判断是否为回文字符串前面我们讲过一个关于字符串的算法:KMP算法。今天我们来讲另外一个字符串算法:Manacher算法。这个算法是用于解决一个问题叫:最长回文子串。前期文章:KMP算法牛客网OJ链接说的简单一点,给定一个字符串,返回的值是这个字符串的最长回文子串的长度。顾名思义,即是回文串,也是子串。文章目录一、BF算法二、Manacher算法一、BF算法那上图的示例2为例:abc1234321ab。最简单的思路就是从左到右遍历每一个字符。每来到一个字符位置,我们可以向左右两边进行扩展,分别比较左右两边的字符。

    2022年10月17日
    0
  • GlassFish_jellyfish英文介绍

    GlassFish_jellyfish英文介绍GlassFish(水晶鱼)是一个免费、开放源代码的应用服务,它实现了JavaEE5。GlassFish的另外一个秘密武器,就是Grizzly,Grizzly是一个基于JavaNIO(NewIO)技术,并完全以Java实现的一个HTTP的Listener,有了Grizzly,GlassFish在静态文件传输方面的性能比Tomcat要强得多,而且可以支持更多的并发访问。GlassFish社团…

    2022年8月20日
    4
  • Matlab中的数据预处理-归一化(mapminmax)与标准化(mapstd)

    Matlab中的数据预处理-归一化(mapminmax)与标准化(mapstd)最近遇到数据预处理的一些问题,本来很简单的东西,但是却搞的烦烦的,痛定思痛,决定自己实现一下。一、mapminmaxProcessmatricesbymappingrowminimumandmaximumvaluesto[-11]意思是将矩阵的每一行处理成[-1,1]区间,此时对于模式识别或者其他统计学来说,数据应该是每一列是一个样本,每一行是多个样本的同一维,即

    2022年6月15日
    31
  • 2019天猫双十一晚会_2018双十一大数据

    2019天猫双十一晚会_2018双十一大数据摘要:EagleEye作为阿里集团老牌的链路跟踪系统,其自身业务虽不在交易链路上,但却监控着全集团的链路状态,特别是在中间件的远程调用上,覆盖了集团绝大部分的场景,在问题排查和定位上发挥着巨大的作用,保障了各个系统的稳定性,为整个技术团队打赢这场战役保驾护航。作者:王华锋(水彧)背景双十一一直是阿里巴巴集团每年要打的一场大战役。要打赢这场战役,技术上,不仅仅是几个应用、几个系统的事,也不是多…

    2022年8月16日
    3

发表回复

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

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