层次结构表,更新特定级别的列

时间:2017-06-21 21:19:00

标签: sql sap hana hana-sql-script

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

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为null的所有级别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,我觉得这应该更容易,但我遇到了很多困难。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

抱歉这个愚蠢的问题。简单的解决方法就像@dr_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