Ваш вопрос отражает очень распространенное недопонимание иерархических запросов. А именно:
Условие connect by
применимо только к уровням 2 и выше. Если предложение start with
отсутствует, уровень 1 будет всегда . Условия на уровне 1 приведены в предложении start with
, а не в connect by
.
Чтобы получить желаемый результат, вы должны добавить предложение start with
с тем же условием (а именно, level < t.l
).
Однако, проверка измененного запроса приводит к ошибке; это вызвано корреляцией глубиной более одного уровня, которая действительно является проблемой, связанной с cross apply
, а не с иерархическим битом.
EDIT - На самом деле кажется, что использование level
в предложении start with
также не работает должным образом. Я оставляю этот ответ, однако - объяснение того, почему ваши ожидания были неверны, все еще в силе.