MySql Povit_MySQL pivot row成动态列数「建议收藏」
杨魅力
不幸的是,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.cn/227651.html原文链接:https://javaforall.cn
相关文章
- shellcode免杀「建议收藏」
- CentOS 7 安装MySQL 5.7 或安装指定版本MySQL「建议收藏」
- mysql数据库SQL查询语句SELECT详细查询(超详细)「建议收藏」
- Linux下修改Mysql密码的多种方式「建议收藏」
- Mysql truncate 清空表数据「建议收藏」
- Mysql清空表中数据「建议收藏」
- MySQL中tinytext、text、mediumtext和longtext详解「建议收藏」
- javaweb登录注册功能实现 javaweb 登陆注册 入门 mysql数据库交互 web前后台交互 用户管理增删改查 实现登录 注册 登陆 JavaWeb 简单登陆注册「建议收藏」
- MySQL索引原理及BTree(B-/+Tree)结构详解「建议收藏」
- mysql 更改密码 alter_MySQL修改账号密码方法大全「建议收藏」
- mysql explain ref const_MySQL EXPLAIN 详解「建议收藏」
- 12个MySQL慢查询的原因分析「建议收藏」
- MySQL中创建新表的步骤(在mysql中创建表)
- MySQL中强大的子查询功能(mysql子查询)
- 实现MySQL时间增加功能的方法分享(mysql时间增加)
- MySQL之继承:姜承尧的缔造(mysql姜承尧)
- MySQL拒绝远程访问:如何解决?(mysql远程访问拒绝)
- MySQL远程连接失败解决方法(mysql不能远程连接)
- MySQL改变背景:使用字符集(mysql 改变字符集)
- MySQL同步部分表的操作方法(mysql 同步 部分表)
- MySQL读写性能测试:谁一步到位?(mysql读写 性能测试)
- 深入MySQL井号的神奇作用解析(mysql中井号的作用)
- MySQL中DES命令简要介绍加密算法使用方法(mysql中des命令)
- 过程通过CMD查看MySQL存储过程(cmd查看mysql存储)
- ASP技术可以驱动MySQL吗(asp能连接mysql吗)
- 解决方法无法打开MySQL下载页面这里有解决方案(mysql下载网页进不去)
- MySQL下载客户端,轻松管理数据库(mysql下载客户端)
- 关于MySQL外键不建议使用,降低数据完整性和性能(25字)(mysql不推荐使用外键)
- 追求性能和效率,MySQL不建议使用UUID作为主键(mysql不推荐uuid)