MySQL将行输出为无限数量的列

时间:2015-11-12 02:40:04

标签: mysql pivot

我试图将数据库中的值转储到电子表格中,其中键值为列。

这是我尝试执行的基本查询。它找到每个季度每家公司的平均值。

SELECT company_name, CONCAT(YEAR(date), "Q", QUARTER(date)) date, AVG(value)
FROM company_values
JOIN companies
ON company_values.company_id=companies.company_id
GROUP BY company_name, YEAR(date), QUARTER(date)
ORDER BY date ASC;

它输出一个你期望的表:

+--------------+--------+------------+
| company_name |  date  | AVG(value) |
+--------------+--------+------------+
| Yahoo        | 2009Q1 |      0.613 |
| Facebook     | 2009Q1 |      0.724 |
| Motorola     | 2009Q1 |      0.926 |
| Yahoo        | 2009Q2 |      0.854 |
| Facebook     | 2009Q2 |      0.094 |
| Motorola     | 2009Q2 |      0.025 |
| Yahoo        | 2009Q3 |      0.193 |
| Facebook     | 2009Q3 |      0.074 |
| Motorola     | 2009Q3 |      0.499 |
+--------------+--------+------------+

它运作良好,但我需要将每个公司名称作为自己的列,如下所示:

+--------+----------+----------+-------+
|  date  | Facebook | Motorola | Yahoo |
+--------+----------+----------+-------+
| 2009Q1 |    0.724 |    0.926 | 0.724 |
| 2009Q2 |    0.094 |    0.854 | 0.025 |
| 2009Q3 |    0.074 |    0.499 | 0.193 |
+--------+----------+----------+-------+

现在困难的部分:有数百家公司。我知道这对MySQL来说是一项相当困难的任务,但我不知道如何做到这一点。我不关心执行时间;它可以运行一整夜。

有什么想法吗?

0 个答案:

没有答案