【发布时间】:2017-06-08 03:08:19
【问题描述】:
我有一个如下的源表:
Emp_ID| Name| Manager_ID
001|abc|005
005|cde|010
010|xyz|050
050 | bcg| 100
100|sta|NULL
我的要求是填充目标表,如下所示:
Emp_ID| Name| Manager_1| Manager_2| Manager_3| Manager_4
005|cde|xyz|bcg|sta|NULL
050|bcg|sta| NULL|NULL|NULL
100|sta|NULL|NULL|NULL
001|abc|cde|xyz|bcg|sta
我可以通过 Connect by 子句使用递归选择并填充 Manager_1 的值,但无法通过逻辑将 Manager_2、Manager_3、Manager_4 值填充为单行中的不同列值,具体取决于多少级别特定员工存在层次结构。 请帮忙。
【问题讨论】:
-
这个要求是荒谬的。除非您知道“通过外部方式”(不查看数据),否则您甚至不知道输出需要扩展多远(多少列),并且在不提前知道列数的情况下,不可能编写SQL 查询。您将需要动态 SQL,这是不推荐的,通常是设计不佳的标志。 (这个查询的输出显然设计得很糟糕。)这是一项工作任务还是他们在课堂上教的东西?
-
使用枢轴表达式。
-
您当前的查询是什么,它会产生什么输出?
-
@mathguy:它的工作分配类型.. 我尝试使用 Oracle SQL 中提供的 'with select' 子句和路径选项
-
@access_granted:您能否详细说明一下“枢轴”选项。这会很有帮助。
标签: oracle recursion hierarchical-data