Создание родительских дочерних отношений на основе дат в SQL - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть таблица, состоящая из моих узлов и родительских идентификаторов, а также даты, когда они действительны с и по для этих конкретных отношений. Я хочу попытаться создать родительские дочерние отношения, используя SQL, либо сохраняя их в другой таблице, либо непосредственно в операторе select, который учитывает измерение времени. Я работаю над базой данных SAP HANA, и функции иерархии будут подходить, но они не учитывают измерение времени. Также SAP HANA не поддерживает рекурсивный sql.

Я пытался изобразить это на диаграмме ниже. Как вы можете видеть, узел 7 перемещается из 4 -> 5 в начале 2019 года.

Проблема возникает, когда у меня есть дочерний узел, у которого нет даты истечения срока действия на узле 8. Тогда это также должно двигаться, но узел 9, который заканчивается в 2016 году, не должен.

             1
           /   \
          2     3
         /        \
        4           5
       /              \
      7 Ends(2018)     7 starts(2019)
     / \                \
    8     9 ends(2016)    8

Так что в идеале я могу получить таблицу, в которой 7 и 8, которые переводят, получают новый уникальный идентификатор или, по крайней мере, четко представлены как действительные только до 5 после 2019 года.

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

Для зависимых от времени иерархий можно использовать функцию генератора иерархии HIERARCHY_TEMPORAL , если выполнены предварительные условия. Это должно быть верно и для вашего случая.

Можете ли вы объяснить, почему никакая иерархическая функция не может быть использована, как вы сказали?

0 голосов
/ 18 апреля 2019

Извините, я не специалист SAP, но как насчет этого?

Create table daterelation
(
  child numeric,
  parent numeric,
  startdate datetime,
  enddate datetime,
)

Затем можно создать представление или функцию, которая берет дату и включается в результаты.

...