mysql - 在 MySQL 中将行转换为列以获取自定义值
问题描述
我经历了很多类似的问题(mysql 中的行到列转换)和提供的解决方案,但这些解决方案对我不起作用!
预期结果:
Name |S1 |S2 |S3 |S4 |S5 |S6
----------------------------------------
ABC |Pass |Fail |Fail |Pass |Pass |Fail
SQL Query:
----------
SELECT Name,
(CASE WHEN (Semester = 'S1' AND Result= 'Pass') THEN 'Pass' ELSE 'Fail' END) AS S1,
(CASE WHEN (Semester = 'S2' AND Result= 'Pass') THEN 'Pass' ELSE 'Fail' END) AS S2,
(CASE WHEN (Semester = 'S3' AND Result= 'Pass') THEN 'Pass' ELSE 'Fail' END) AS S3,
(CASE WHEN (Semester = 'S4' AND Result= 'Pass') THEN 'Pass' ELSE 'Fail' END) AS S4,
(CASE WHEN (Semester = 'S5' AND Result= 'Pass') THEN 'Pass' ELSE 'Fail' END) AS S5,
(CASE WHEN (Semester = 'S6' AND Result= 'Pass') THEN 'Pass' ELSE 'Fail' END) AS S6
FROM pivot_example
-- GROUP BY Semester
SQL 输出:
Name |S1 |S2 |S3 |S4 |S5 |S6
--------------------------------------------------
ABC |Pass |Fail |Fail |Fail |Fail |Fail
ABC |Fail |Fail |Fail |Fail |Fail |Fail
ABC |Fail |Fail |Fail |Fail |Fail |Fail
ABC |Fail |Fail |Fail |Pass |Fail |Fail
ABC |Fail |Fail |Fail |Fail |Pass |Fail
ABC |Fail |Fail |Fail |Fail |Fail |Fail
解决方案
a) 为了产生一行,改变:
GROUP BY Semester
进入:
GROUP BY Name
b) 对于通过/失败值,可能需要查询,具体取决于表的外观。
推荐阅读
- c# - 解决.net core中项目的所有依赖
- spring - 与@JsonAutoDetect, ObjectMapper() 有点混淆
- java - 春季如何在枚举中自动装配服务
- javascript - 使用javascript单击按钮时如何显示随机图像
- excel - Excel在同一单元格中输入和输出
- c++ - 带有模板的 GoogleTest
- c++ - 由前缀 RocksDb 索引的反向迭代
- python - 将 Discord Bot 发布到 Heroku 时如何正确保护授权令牌?
- javascript - express.js 会话使用其他文件
- mongodb - MongoDB 使用限制和跳过更新