Вопрос родился в качестве теста на испытательном сроке по одной из реальных задач отчетности. Есть таблица с пропусками в атрибутах, для целей примера считаем, что записи упорядочены по дате создания или по иной дате. В данном примере записи упорядочиваются по ROWID, что не мешает заменить нужным критерием.
Col1 | Col2 |
---|---|
1 | |
1 | 10 |
1 | |
1 | 15 |
2 | |
2 | 20 |
Нужно SELECT-запросом во втором столбце пустоты заполнить нижеследующими непустыми значениями вот так:
Col1 | Col2 |
---|---|
1 | 10 |
1 | 10 |
1 | 15 |
1 | 15 |
2 | 20 |
2 | 20 |
SELECT col1,
NVL(col2,
LEAD(col2) OVER (PARTITION BY col1
ORDER BY ROWID)) col2
FROM t1
Это, пожалуй, один из самых простых примеров, когда использование аналитических функций значительно облегчает разработку запроса. В Учебном Центре РДТЕХ читается двухдневный, очень интенсивный курс по аналитическим функциям в применении к хранилищам данных: Oracle Database 12c: Analytic SQL for Data Warehousing.