MySQL : how to group multiple row into one row

标签 mysql sql syntax

请帮帮我。
我在 mysql 中的表是这样的:

kd_mapel|Sem1   |Sem2   |Sem3
EKO-001 |79     |NULL   |NULL
EKO-002 |NULL   |80     |NULL
FIS-001 |77     |NULL   |NULL
FIS-002 |NULL   |76     |NULL
FIS-201 |NULL   |NULL   |81
GEO-001 |79     |NULL   |NULL
INA-001 |79     |NULL   |NULL
INA-002 |NULL   |80     |NULL
INA-003 |NULL   |NULL   |79
ING-001 |77     |NULL   |NULL
ING-002 |NULL   |79     |NULL
ING-003 |NULL   |NULL   |80


预期结果是:

kd_mapel|Sem1   |Sem2   |Sem3
EKO     |79     |80     |NULL
FIS     |77     |76     |81
GEO     |79     |NULL   |NULL
INA     |79     |80     |79
ING     |77     |79     |80

这些结果是否可以使用 mysql 代码?如何?
谢谢。

最佳答案

试试这个查询

select substring(kd_mapel, 1, locate("-", kd_mapel)-1) as kd, 
max(sem1), max(sem2), max(sem3)
from tbl
group by kd

FIDDLE

|  KD | MAX(SEM1) | MAX(SEM2) | MAX(SEM3) |
-------------------------------------------
| EKO |        79 |        80 |    (null) |
| FIS |        77 |        76 |        81 |
| GEO |        79 |    (null) |    (null) |
| INA |        79 |        80 |        79 |
| ING |        77 |        79 |        80 |

如果你有多个 kd_mapel 的 sem 记录,你甚至可以使用 sum 函数。

关于MySQL : how to group multiple row into one row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16849660/

相关文章:

MySql JOIN 两个表 SUM 左表的错误结果

performance - 如何优化以下 SQL 查询以提高性能?

sql - 工会异常行为

rust - `where` 关键字的语法和语义是什么?

mysql - 更新洋红色时,core_file_storage 中的 UNQ_CORE_FILE_STORAGE_FILENAME_DIRECTORY_ID 键重复条目

php - 我想加快 MySQL 查询速度

php - MYSQL删除语句删除太多行

syntax - 如何使用 BNF、EBNF 等表示代码语法的垂直对齐?

syntax - 在 Crystal Reports 中嵌套 if else

mysql - SQL Server、Joomla 和 IIS7