Группируйте / объединяйте строки и сохраняйте данные, которые не равны нулю

0

Я пытаюсь написать команду 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.

  • 2
    Можем ли мы увидеть вашу попытку?
  • 0
    Подсказка: GROUP BY .
Теги:
database

2 ответа

1
Лучший ответ

использовать 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
  • 0
    Огромное спасибо! Я не могу поверить, что я пропустил команду MAX (). : $
1

По вашему требованию, я думаю, вы можете попробовать следующее:

  select A.Xdate,max(Red) as C2 ,max(Blue) as C3  from test A  
  group by A.XDate;  

Ещё вопросы

Сообщество Overcoder
Наверх
Меню