исключить нулевые значения с помощью группы - PullRequest
1 голос
/ 21 сентября 2019

Предположим, у нас есть таблица (или результат запроса) следующим образом:

+------------+--------------+--------+--------+--------+--------+
| station_nr | station_name | mode_1 | mode_2 | mode_3 | mode_4 |
+------------+--------------+--------+--------+--------+--------+
| 22         | MTO22        | Large  | NULL   | NULL   | NULL   |
+------------+--------------+--------+--------+--------+--------+
| 22         | MTO22        | NULL   | NULL   | NULL   | XLARGE |
+------------+--------------+--------+--------+--------+--------+
| 22         | MTO22        | NULL   | Medium | Null   | Null   |
+------------+--------------+--------+--------+--------+--------+

нам нужно сгруппировать по station_nr и _name в и исключить нулевые значения, желаемый результат будет таким:

+------------+--------------+--------+--------+--------+--------+
| station_nr | station_name | mode_1 | mode_2 | mode_3 | mode_4 |
+------------+--------------+--------+--------+--------+--------+
| 22         | MTO22        | Large  | Medium | NULL   | XLARGE |
+------------+--------------+--------+--------+--------+--------+

1 Ответ

2 голосов
/ 21 сентября 2019

Использовать MAX():

SELECT 
    station_mr, 
    station_name, 
    MAX(mode_1) mode_1, 
    MAX(mode_2) mode_2, 
    MAX(mode_3) mode_3,
    MAX(mode_4) mode_4
FROM mytable
GROUP BY station_mr, station_name

MAX() игнорирует NULL значения.Это также будет работать с MIN().

Однако помните, что если в одном из ваших столбцов есть два ненулевых значения для данной станции, появится только одно из них (наибольшее, в алфавитном порядке).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...