Я часто пишу запросы, в которых я поворачиваю данные и в результате получаю значения NULL, которые хочу свернуть. Например. данные, подобные следующим:
id time_in time_out
1 2009-11-01
1 2009-10-30
2 2008-12-15
2 2009-02-03
Затем я делаю внешний запрос примерно так:
SELECT id,
MIN(time_in) AS time_in,
MIN(time_out) AS time_out
FROM (...query above...)
GROUP BY id
Это даст такие данные:
id time_in time_out
1 2009-10-30 2009-11-01
2 2008-12-15 2009-02-03
Проблема в том, что я использую ограниченный интерфейс для доступа к базе данных Oracle, и запросы с использованием MIN
и MAX
часто истекают. Мне было интересно, есть ли более эффективный способ "свертывания" значений NULL, чем то, что я сделал. Иногда я GROUP BY
другое поле, которое не является индексом, тогда как id
, показанное выше, является первичным ключом.