【发布时间】:2016-09-06 14:37:27
【问题描述】:
我有一个奇怪的数据库架构(我无法更改),其中 TableA 中的行将包含一个存储更多信息的表名。我想从 TableA 中查询数据,并将它们与查询行中包含在表中的扩展值连接起来。
例如假设我有以下数据
TableA
Event ID Accnt ID DetailTable
----------- ---------- ----------------
1 UserA Table1
2 UserA Table2
3 UserB Table2
Table1
Accnt ID Status
---------- ------------
UserA Active
Table2
Accnt ID Status
---------- ------------
UserA Inactive
UserB Active
我想要以下结果
select ... from ...
Result
Accnt ID DetailTable Status
--------- ------------- ---------
UserA Table1 Active
UserA Table2 Inactive
UserB Table2 Active
这可能可以在 TableA 中的每条记录上使用循环然后查询正确的详细信息表来完成,但我想知道它是否可以在 Oracle SQL 中的单个 Select 语句中完成。
谢谢
【问题讨论】:
-
动态 SQL 是要走的路。 (但似乎是一个非常奇怪的“问题”。)
-
您不能将一个查询中的值用作同一查询中的 sql 关键字/标识符。不可能。您必须运行查询,获取值,然后使用该值构建一个新的 SQL 字符串,然后执行该字符串。
-
动态 SQL 确实是要走的路。您可以使用流水线表函数,以便最终可以在简单的 sql 选择中使用它。看看oracle-base.com/articles/misc/pipelined-table-functions