Я часто пишу запросы, в которых я поворачиваю данные и получаю значения 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
, показанное выше, является первичным ключом.