MySQL 将列转置为行

标签 mysql sql

我有下表

-----------------------------------------------------------
| Project    | Q1_HC  | Q2_HC  | Q1_COST  | Q2_COST       |
-----------------------------------------------------------
| ProjectA   | 20     | 15     | 20000.00 | 15000.00      |
| ProjectB   | 10     | 15     | 10000.00 | 15000.00      |
-----------------------------------------------------------

我想要这样的 View

-------------------------------------------
| Project    | Quarter| HC     | COST     |
-------------------------------------------
| ProjectA   | Q1     | 20     | 20000.00 |
| ProjectA   | Q2     | 15     | 15000.00 |
| ProjectB   | Q1     | 10     | 10000.00 |
| ProjectB   | Q2     | 15     | 15000.00 |
-------------------------------------------

我在这里看到了很多线程,但没有一个对我有帮助。感谢任何帮助

最佳答案

像这样的东西应该可以工作

SELECT Project, 'Q1' Quarter, Q1_HC HC, Q1_COST COST
FROM TableName
UNION
SELECT Project, 'Q2', Q2_HC, Q2_COST
FROM TableName
ORDER BY Project, Quarter

关于MySQL 将列转置为行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24306601/

相关文章:

sql - 数据库设计中如何避免一列表

mysql - 计数字段、连接、多重选择

mysql - SQL求和计算困惑

php - 更新数据库中的多行或记录

mysql - 如何使用 emacs 和 mysql

MySQL Select,其中字段不在另一个字段的 CSV 列表中

php - MySQL统计复杂查询结果?

php - 简单的 SQL UPDATE 查询使连接速度减慢 5-10 秒

sql - 如何使用特定格式交换名字和姓氏

Mysql如何从一个表中选择列值不是X和Y的所有记录