MySQL SELECT语句如何按多列分组实现同用户同日期合并为单行

以上是执行MySQL SELECT语句得到的输出结果,需要按照exp_date和username两个字段分组,实现同一日期下任意一个username仅对应一行数据的效果。
具体来说,2021-10-26日期下用户名为S.M.gadekar的记录,lodging、boarding、laundry、conveyance这几个列的取值需要合并展示在同一行中。
最优解决方案
直接在原查询的基础上嵌套一层聚合查询即可,语法如下:
SELECT exp_date, username, MAX(lodging) AS lodging, MAX(boarding) AS boarding, MAX(laundry) AS laundry, MAX(conveyance) AS conveyance FROM ( -- 此处替换为你原本的SELECT查询语句 your_original_query_here ) AS raw_data GROUP BY exp_date, username;
方案说明
- 原查询结果中,同一日期、同一用户的多条记录里,四个费用类字段每列仅存在一个有效值,其余均为NULL
MAX()聚合函数会自动忽略NULL值,可以直接提取到对应列的唯一有效结果- 如果字段为数值类型,且同一分组下可能存在多个有效值需要累加的话,把
MAX()替换为SUM()即可;如果是字符串类型需要合并多个值,可替换为GROUP_CONCAT()
内容的提问来源于stack exchange,提问作者idleMind
相关产品推荐
相关产品推荐

