【发布时间】:2015-11-08 13:51:03
【问题描述】:
是否可以使用 SQL(或 PL/SQL)动态连接表?
我有一个包含多列的 TableA。下面的每一列都有自己单独的表,除了 id。
| id | AA | BB | CC | DD | EE |
|-----|----|----|----|----|----|
| 123 | 0 | 0 | 1 | 1 | 1 |
| 456 | 1 | 1 | 0 | 1 | 1 |
| 789 | 1 | 0 | 1 | 0 | 0 |
.......
基于我需要连接表的列的值。
- 对于 id = 123,我想加入 CC、DD、EE 表。李>
- id = 456我想加入AA、BB、DD、 EE 表。
- 对于 id = 789,我想加入 AA、CC 表。
- 等等。
- 最后将结果合并到一个表中。
- 还有表 AA、BB、CC、DD、EE具有相同的列集。
示例数据:
表AA
| id | Value |
|-----|-------|
| 456 | bbb |
| 789 | ccc |
表BB
| id | Value |
|-----|-------|
| 789 | ccc |
| 456 | bbb |
表抄送
| id | Value |
|-----|-------|
| 123 | aaa |
| 789 | ccc |
表DD
| id | Value |
|-----|-------|
| 123 | aaa |
表EE
| id | Value |
|-----|-------|
| 123 | aaa |
预期输出
| id | Value |
|-----|-------|
| 123 | abc |
| 789 | ccc |
id 456 不会成为最终结果的一部分,因为它会在加入时被过滤掉。
是否可以在 SQL 或 PL/SQL 中执行此操作(首选纯 SQL)。另外:我想做一个INNER JOIN。
【问题讨论】:
-
您应该使用示例数据和所需的结果来编辑您的查询。
-
值后面加句号的原因是什么?您可以为表格发布 DDL 吗?
-
那是错字。更新了问题
-
假设,可以动态地
JOIN(事实并非如此):鉴于表 AA 到 EE 执行 - 根据您的描述-“具有相同的列集”并且您想“最终将结果合并到一个大选项卡中”-个人加入会是什么样子?为了UNION他们,您不能每次都选择所有表的所有列,根据您的示例,表(以及列)的数量可能不同 - 而UNION中的所有SELECTs 必须具有相同的列数。 -- 表格结构、样本数据和预期输出可能有助于找到解决方案... -
编辑您的问题并提供示例数据和所需的结果。目前尚不清楚您要做什么。