【问题标题】:Hierarchy table, update column for a particular level层次结构表,更新特定级别的列
【发布时间】:2017-06-21 21:19:00
【问题描述】:

所以我有一个如下格式的层次结构表:

Instance | Parent | Serial | Hierarchy Level
    1    |   0    |   x0   |         1
    2    |   0    |   x1   |         1
    3    |   1    |   xy0  |         2
    4    |   1    |   xy1  |         2
    5    |   2    |    -   |         2
    6    |   2    |    -   |         2
    7    |   2    |    -   |         2

而我想得到的是:

Instance | Parent | Serial | Hierarchy Level
    1    |   0    |   x0   |         1
    2    |   0    |   x1   |         1
    3    |   1    |   xy0  |         2
    4    |   1    |   xy1  |         2
    5    |   1    |   x0   |         2
    6    |   2    |   x1   |         2
    7    |   2    |   x1   |         2

所有级别 1 都有一个序列号。我的目标是更新 Serial 为空的所有 2 级,为此,我必须选择父级的序列号。有人可以告诉我如何解决这个问题。

这是我迄今为止尝试过的(以及其他几件事,但无济于事):

UPDATE "USER"."TABLE" AS A1
SET A1.SERIAL = 
(
    SELECT "SERIAL" 
    FROM "USER"."TABLE" AS A2
    WHERE A2."PARENT" = A1."INSTANCE" 
)
WHERE "SERIAL" IS NULL
AND "HIERARCHYLEVEL" = 2

原生于 java,我觉得这应该容易得多,但我遇到了很多困难。任何帮助将不胜感激。

【问题讨论】:

  • 看起来你的父和实例标准在子查询中是落后的。此外,您的数据结构中存在冗余,可能导致数据差异。层次结构级别应该可以由一行所拥有的父级数量确定(并因此确定)。通过存储该值,您可能会引入冲突:与现实不一致的数据值。
  • @rd_nielsen 干杯!!!实际上,父和实例标准是倒退的!如此简单的修复;不高兴我不得不浪费你的时间!非常感谢。

标签: sql sap hana hana-sql-script


【解决方案1】:

抱歉这个愚蠢的问题。正如@rd_nielsen 在 OP 回复中解释的那样,简单的修复方法:

UPDATE "user"."table" AS A1
SET A1.serial = 
(
    SELECT "serial" 
    FROM "user"."table" AS A2
    WHERE A1."PARENT"  = A2."INSTANCE"
)
WHERE "serial" IS NULL
AND "HIERARCHYLEVEL" = 2

【讨论】:

    猜你喜欢
    • 2017-09-02
    • 1970-01-01
    • 2013-07-04
    • 2023-04-03
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    相关资源
    最近更新 更多