首页 > 解决方案 > 分组/组合行并保存不为空的数据

问题描述

我正在尝试编写一个 SQL 命令,它将下表中的行分组。

+------------+---------+----------+
|    DATE    |   RED   |   BLUE   |
+------------+---------+----------+
| 2018-01-01 |   YES   |   null   |
| 2018-06-11 |   YES   |   null   |
| 2018-06-11 |   null  |   YES    |
+------------+---------+----------+

我试图达到的结果如下:

+------------+---------+----------+
|    DATE    |   RED   |   BLUE   |
+------------+---------+----------+
| 2018-01-01 |   YES   |   null   |
| 2018-06-11 |   YES   |   YES    |
+------------+---------+----------+

但是,我无法获得将具有相同日期的两行组合/分组并在分组期间覆盖现有 NULL 值的命令。

有任何想法吗?顺便说一句,我正在使用 MySQL。

标签: mysqlsqldatabase

解决方案


使用group by已经在评论中说

     select  DATE,max(RED) as  RED,max(BLUE) as BLUE  from t1
     group by DATE

https://www.db-fiddle.com/f/e7gxBPx5pyAPELqh516Hpn/1

DATE        RED BLUE
2018-01-01  YES null
2018-06-11  YES YES

推荐阅读