【发布时间】:2020-08-29 23:11:18
【问题描述】:
我在 oracle 中有一个包含 10 列的表,例如表 A,其中包含 col_1、col_2、col_3 等。我还有另一个表,表 B,其中的行具有表 A co1_1、col_2、col_3 中的列名。表 B 中的行可能会有所不同。
TABLE A
COL1 COL2 COL3 COL4 COL5 COL6 COL7 COL8 COL9 COL10
TABLE B
COL1
COL2
COL3
我想编写一个 oracle sql 查询,它根据表 B 中的列名(行)动态获取选择列名。
如果表 B 有 3 行对应的列名,那么我的查询应该是这样的
从 A 中选择 col_1、col_2、col_3
如果表 B 有 4 行,那么我的查询应该动态更改为以下
select col_1, col_2, col_3, col_4 from A
【问题讨论】:
-
您能否提供有关此查询上下文的更多信息?如果这是针对应用程序的,最简单的方法是从应用程序生成查询,或者可能使用返回动态游标的存储过程。如果您需要完全在 SQL 中完成此操作,则可能但更棘手。
-
嗨 Jon,我的目标是根据另一个表中存在的列动态生成数据集。我对 plsql 不是很熟悉,我正在使用一个支持 sql 代码的应用程序。目前,我正在尝试在 with 子句(oracle 12c 增强)中的 plsql 代码/函数中实现 Tejash 建议的动态 sql 并实现我想要的......请告诉我这种方法是否有效?并指引我正确的方向。
-
在下面查看我的答案。
标签: sql oracle dynamic-sql