Почему в h2 in memory запрос не возвращает результатов, если я делаю вложенный select во from

Есть иерархический запрос в ftl файле. В таком виде он четко отрабатывает:

WITH parentProcess (id, superProcessInstanceId, processDefinitionKey, idLevel, endTime) AS
     (
         SELECT b.id, b.superProcessInstanceId, b.processDefinitionKey, 0 idLevel, b.endtime
         FROM bpmsHistoricProcessInstanceEntityImpl b
         WHERE id = '${parameter}'
         UNION ALL
         SELECT b.id, b.superProcessInstanceId, b.processDefinitionKey, idLevel - 1, b.endTime
         FROM bpmsHistoricProcessInstanceEntityImpl b
                  INNER JOIN parentProcess
                             ON b.id = parentProcess.superProcessInstanceId
     ),
 childProcess (id, superProcessInstanceId, processDefinitionKey, idLevel, endTime) AS
     (
         SELECT b.id, b.superProcessInstanceId, b.processDefinitionKey, 0 idLevel, b.endtime
         FROM bpmsHistoricProcessInstanceEntityImpl b
         WHERE id = '${parameter}'
         UNION ALL
         SELECT b.id, b.superProcessInstanceId, b.processDefinitionKey, idLevel + 1, b.endTime
         FROM bpmsHistoricProcessInstanceEntityImpl b
                  INNER JOIN childProcess
                             ON b.superProcessInstanceId = childProcess.id
     )
SELECT * FROM parentProcess WHERE endTime IS NULL
UNION
SELECT * FROM childProcess WHERE endTime IS NULL

Как только эту часть добавляю во from, запрос перестает возвращать данные

SELECT * FROM parentProcess WHERE endTime IS NULL
UNION
SELECT * FROM childProcess WHERE endTime IS NULL

Запрос, который перестает вовзращать результаты

WITH parentProcess (id, superProcessInstanceId, processDefinitionKey, idLevel, endTime) AS
     (
         SELECT b.id, b.superProcessInstanceId, b.processDefinitionKey, 0 idLevel, b.endtime
         FROM bpmsHistoricProcessInstanceEntityImpl b
         WHERE id = '${parameter}'
         UNION ALL
         SELECT b.id, b.superProcessInstanceId, b.processDefinitionKey, idLevel - 1, b.endTime
         FROM bpmsHistoricProcessInstanceEntityImpl b
                  INNER JOIN parentProcess
                             ON b.id = parentProcess.superProcessInstanceId
     ),
 childProcess (id, superProcessInstanceId, processDefinitionKey, idLevel, endTime) AS
     (
         SELECT b.id, b.superProcessInstanceId, b.processDefinitionKey, 0 idLevel, b.endtime
         FROM bpmsHistoricProcessInstanceEntityImpl b
         WHERE id = '${parameter}'
         UNION ALL
         SELECT b.id, b.superProcessInstanceId, b.processDefinitionKey, idLevel + 1, b.endTime
         FROM bpmsHistoricProcessInstanceEntityImpl b
                  INNER JOIN childProcess
                             ON b.superProcessInstanceId = childProcess.id
     )
SELECT * FROM (
SELECT * FROM parentProcess WHERE endTime IS NULL
UNION
SELECT * FROM childProcess WHERE endTime IS NULL
)

Данный запрос используется для тестов на базе данных h2. Внешний select мне необходим, так как я еще хочу сделать DENSE_RANK() для поля level, чтобы получить уровень иерархии.


Ответы (0 шт):