Is it possible to use Crosstab/Pivot Query in MySQL?(是否可以在 MySQL 中使用 Crosstab/Pivot Query?)
问题描述
我正在使用 MySQL.这是我的桌子
I'm using MySQL. This is table i have
supplier_ID Item_ID Date Price QTY
1 1 2012-01-01 00:00:00 500.00 2
1 1 2012-01-03 00:00:00 450.00 10
2 1 2012-01-01 00:00:00 400.00 5
3 1 2012-05-01 00:00:00 500.00 1
我需要一个选择查询来显示类似这样的表格.
I need a select query showing a table something like this.
supplier_ID 2012-01-01 2012-01-03 2012-05-01
1 500.00(2) 450.00(10) null
2 400.00(5) null null
3 null null 500.00(1)
推荐答案
您可以使用此查询 -
SELECT
supplier_id,
MAX(IF(date = '2012-01-01', value, NULL)) AS '2012-01-01',
MAX(IF(date = '2012-01-03', value, NULL)) AS '2012-01-03',
MAX(IF(date = '2012-05-01', value, NULL)) AS '2012-05-01'
FROM (
SELECT supplier_id, DATE(date) date, CONCAT(SUM(price), '(', qty, ')') value FROM supplier
GROUP BY supplier_id, DATE(date)
) t
GROUP BY supplier_id;
+-------------+------------+------------+------------+
| supplier_id | 2012-01-01 | 2012-01-03 | 2012-05-01 |
+-------------+------------+------------+------------+
| 1 | 500.00(2) | 450.00(10) | NULL |
| 2 | 400.00(5) | NULL | NULL |
| 3 | NULL | NULL | 500.00(1) |
+-------------+------------+------------+------------+
它产生你想要的结果.但是如果你想动态地做,那么看看这篇文章自动化数据透视表查询" - http://www.artfulsoftware.com/infotree/queries.php#523 或此链接 - 动态数据透视表.
It produces result you want. But if you want to do it dynamically, then have a look at this article 'Automate pivot table queries' - http://www.artfulsoftware.com/infotree/queries.php#523, or this link - Dynamic pivot tables.
这篇关于是否可以在 MySQL 中使用 Crosstab/Pivot Query?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:是否可以在 MySQL 中使用 Crosstab/Pivot Query?


基础教程推荐
- ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01
- 带有WHERE子句的LAG()函数 2022-01-01
- MySQL 5.7参照时间戳生成日期列 2022-01-01
- 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01
- CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
- MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01
- 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01
- 带更新的 sqlite CTE 2022-01-01
- while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
- 从字符串 TSQL 中获取数字 2021-01-01