Все,
Я пытаюсь преобразовать запрос 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)
Есть ли какие-нибудь указатели на то, как его можно выполнить?