我试图将数据库中的值转储到电子表格中,其中键值为列。
这是我尝试执行的基本查询。它找到每个季度每家公司的平均值。
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来说是一项相当困难的任务,但我不知道如何做到这一点。我不关心执行时间;它可以运行一整夜。
有什么想法吗?