Найти в Дзене
Q-ANSWER

Как сравнить диапазон целочисленных значений в PL / SQL?

Я пытаюсь сравнить диапазон целочисленных значений между тестовой таблицей и справочной таблицей. Если какой-либо диапазон значений из тестовой таблицы перекрывается с доступными диапазонами в справочной таблице, ее следует удалить. Извините, если это не ясно, но вот пример данных: <Сильный> test_table: MIN MAX
10 121
122 648
1200 1599
<Сильный> REFERENCE_TABLE: MIN MAX
50 106
200 1400
1450 1500
MODIFIED TEST_TABLE: (ожидаемый результат после запуска PL / SQL) MIN MAX
10 49
107 121
122 199
1401 1449
1501 1599
В первой строке из приведенного выше примера 10-121 был вырезан на две строки: 10-49 и 107-121, потому что значения 50, 51, ..., 106 включены в первую строку таблицы reference_table ( 50-106); и так далее.. Вот что я написал до сих пор с вложенными циклами. Я создал две дополнительные таблицы temp, которые будут хранить все значения, которые будут найдены

Я пытаюсь сравнить диапазон целочисленных значений между тестовой таблицей и справочной таблицей. Если какой-либо диапазон значений из тестовой таблицы перекрывается с доступными диапазонами в справочной таблице, ее следует удалить.

Извините, если это не ясно, но вот пример данных:

<Сильный> test_table:

MIN MAX
10 121
122 648
1200 1599

<Сильный> REFERENCE_TABLE:

MIN MAX
50 106
200 1400
1450 1500

MODIFIED TEST_TABLE: (ожидаемый результат после запуска PL / SQL)

MIN MAX
10 49
107 121
122 199
1401 1449
1501 1599

В первой строке из приведенного выше примера 10-121 был вырезан на две строки: 10-49 и 107-121, потому что значения 50, 51, ..., 106 включены в первую строку таблицы reference_table ( 50-106); и так далее..

Вот что я написал до сих пор с вложенными циклами. Я создал две дополнительные таблицы temp, которые будут хранить все значения, которые будут найдены в справочной таблице. Затем он создаст новые набор диапазонов, которые будут вставлены в test_table.

Но это не работает корректно. и могут вызвать проблемы с производительностью, особенно если мы имеем дело со значениями миллионов и выше:

http://q-answer.ru/questions/kak-sravnit-diapazon-celochislennyh-znacheniy-v-pl-sql-17056.html