【发布时间】:2018-07-16 16:26:46
【问题描述】:
您好,我有下表:
表格代码
A B C D
test 10 1 NEW
test2 1 5 NEW
test3 5 2 OLD
test4 40 3 NEW
test5 8 7 NEW
test6 7 9 OLDER
结果应该是这样的
A B C D E
test 10 1 NEW OLD
test2 1 5 NEW OLD
test3 5 2 OLD
test4 40 3 NEW
test5 8 7 NEW OLDER
test6 7 9 OLDER
逻辑:
如果 D 是新的,我检查 C 并查看该值是否在 B 中。如果不是,则该行已完成。 如果有一个条目,我检查 D 是否是新的,如果是,则新的 C 是否在另一行的 B 中,依此类推,直到我找到 C 值为 B 且 D 不是新的。 我需要获取该值并将其放在受该 saerch 影响的其他行的 D 列中。
我有什么:
with CODE (A, B, C, D, E) AS
(SELECT Original.A, Original.B, Original.C, Original.D, ''
from myschema.basetable Original where Original.D = 'CORIPD'
UNION ALL
Select lookup.A, lookup.B, lookup.C, lookup.D, ''
from CODE Original, myschema.basetable lookup
where Original.A = lookup.A and Original.C = lookup.B
UNION ALL
Select lookup_next.A, lookup_next.B, lookup_next.C, '' D, lookup_next.D E
from CODE Original, myschema.basetable lookup_next
where Original.A = lookup_next.A and Original.C = lookup_next.B and lookup_next.C IS NULL
)
select A, B, C, D, E from CODE
order by A, C, D
目前的结果:
A B C D E
test 10 1 NEW
test2 1 5 NEW
test3 5 2 OLD
test3 5 2 OLD
test4 40 3 NEW
test5 8 7 NEW
test6 7 9 OLDER
test6 7 9 OLDER
系统是 Windows IBM DB2 10.5
感谢您提供的任何帮助。
【问题讨论】: