Преобразование Oracle sys_connect по пути к SQL Server без родительского идентификатора - PullRequest
0 голосов
/ 10 сентября 2018

Все,

Я пытаюсь преобразовать запрос Oracle в SQL Server, и мне трудно преобразовать раздел sys_connect_path.

Часть проблемы заключается вданные.У меня есть структура стиля гирляндной цепочки, которую нужно свернуть в родительский / дочерний стиль данных.Проблема в том, что не существует надежного способа идентификации родителя.

Вот несколько примеров данных, объясняющих, о чем я говорю:

Primary         Secondary           End
00853445        04800844            9999-12-31
04800844        03547889            9999-12-31
04800844        05294771            2017-02-28
05294771        04800844            2018-02-28

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

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

Primary         Secondary
04800844        04800844
04800844        03547889
04800844        05294771

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

Вот запрос Oracle, который я пытаюсь деконструировать:

SELECT sys_connect_by_path(field1, '/') || '/' || field2 || '/' path
  FROM data
 WHERE connect_by_isleaf = 1 
 connect BY prior field2 = field1 start
 WITH field1 NOT IN (SELECT field2 FROM data)

Есть ли какие-нибудь указатели на то, как его можно выполнить?

...