, В любом случае, спасибо!

льный ответ на следующий вопрос:

Это ошибка, которая была исправлена ​​в 11.2.0.3 или новее, если я правильно помню. (11.2.0.1 больше не поддерживается. 11.2.0.4 - единственный выпуск 11.2, который все еще поддерживается) - @a_horse_with_no_nameНомер ошибки 11840579, и он был исправлен в 11.2.0.3 и 12.1.0.1 - @a_horse_with_no_name

Вопрос

У меня есть стол

CREATE TABLE test(
  from_date date,
  to_date date
);

INSERT INTO test(from_date,to_date)
--VALUES('20171101','20171115');
VALUES(TO_DATE('20171101','YYYYMMDD'),TO_DATE('20171115','YYYYMMDD'));

Следующий запрос в Oracle возвращает только одну строку (ожидается 15 строк)

WITH dateCTE(from_date,to_date,d,i) AS(
  SELECT from_date,to_date,from_date AS d,1 AS i
  FROM test

  UNION ALL

  SELECT from_date,to_date,d+INTERVAL '1' DAY,i+1
  FROM dateCTE
  WHERE d<to_date
)
SELECT d,i
FROM dateCTE

SQL Fiddle -http://sqlfiddle.com/#!4/36907/8

Для теста я изменил условие наi<10

WITH dateCTE(from_date,to_date,d,i) AS(
  SELECT from_date,to_date,from_date AS d,1 AS i
  FROM test

  UNION ALL

  SELECT from_date,to_date,d+INTERVAL '1' DAY,i+1
  FROM dateCTE
  --WHERE d<to_date
  WHERE i<10 -- exit condition
)
SELECT d,i
FROM dateCTE

И получить следующий результат

| D          | I  |
|------------|----|
| 2017-11-01 |  1 |
| 2017-10-31 |  2 |
| 2017-10-30 |  3 |
| 2017-10-29 |  4 |
| 2017-10-28 |  5 |
| 2017-10-27 |  6 |
| 2017-10-26 |  7 |
| 2017-10-25 |  8 |
| 2017-10-24 |  9 |
| 2017-10-23 | 10 |

Почему этот рекурсивный запрос дал неверный результат в Oracle?

SQL Fiddle -http://sqlfiddle.com/#!4/36907/5

Я запустил аналогичный запрос в SQLServer, и я получил правильный результат

WITH dateCTE(from_date,to_date,d,i) AS(
  SELECT from_date,to_date,from_date AS d,1 AS i
  FROM test

  UNION ALL

  SELECT from_date,to_date,DATEADD(DAY,1,d),i+1
  FROM dateCTE
  WHERE d<to_date
)
SELECT d,i
FROM dateCTE

Правильный результат

d           i
2017-11-01  1
2017-11-02  2
2017-11-03  3
2017-11-04  4
2017-11-05  5
2017-11-06  6
2017-11-07  7
2017-11-08  8
2017-11-09  9
2017-11-10  10
2017-11-11  11
2017-11-12  12
2017-11-13  13
2017-11-14  14
2017-11-15  15

Почему это не работает в Oracle? Какие альтернативные варианты вы можете предложить? Спасибо!

Скриншоты из реальной системы:

Ответы на вопрос(2)

Ваш ответ на вопрос