【问题标题】:Creating a parent child relationship based on dates in SQL在 SQL 中根据日期创建父子关系
【发布时间】:2019-04-18 04:20:45
【问题描述】:

我有一个表,其中包含我的节点和父 ID 以及它们对于该特定关系的有效日期。我想尝试使用 SQL 创建父子关系,或者将其存储到另一个表中,或者直接在考虑时间维度的 select 语句中。我正在研究 SAP HANA 数据库,层次结构函数将是可行的方法,但它们没有考虑时间维度。 SAP HANA 也不支持递归 sql。

我试图用下面的图表来描述它。如您所见,节点 7 在 2019 年初从 4 --> 5 移动。

当我有一个子节点时出现问题,我在节点 8 上没有到期日期。那么这也应该移动,但在 2016 年结束的节点 9 不应该。

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

所以理想情况下,我可以得到一个表格,其中转移的 7 和 8 获得一个新的唯一 ID,或者至少清楚地表示为仅在 2019 年之后对 5 有效。

【问题讨论】:

    标签: sql database sap hana


    【解决方案1】:

    对于时间相关的层次结构,如果满足先决条件,则可以使用层次结构生成器函数HIERARCHY_TEMPORAL。它对您的情况也应该有效。

    你能解释一下,为什么不能像你说的那样使用层次函数?

    【讨论】:

    • 我想始终了解组织层次结构,并深入研究一个组织单位,看看哪些职位在其中。在这种情况下,除非我在表中的每个条目上运行它并复制它,否则时间将不起作用。 Ans 也许这就是要走的路。
    【解决方案2】:

    对不起,我不是 SAP 的人,但是这样的事情呢?

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

    然后,您可以创建一个获取日期并加入结果的视图或函数。

    【讨论】:

    • 这是我正在寻找的输出。但是现在我的节点和父母之间有多对多的关系,我不知道如何解决它。
    • 我的建议是使用这些列填充表或视图,这样可以轻松创建根据日期返回不同项目的查询。
    猜你喜欢
    • 2021-12-26
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多