所以我有一个基本表- TRAINING
,它有100列。有些列将完全为空,有些列将包含值。所以说吧 COLUMN 1-20
为空且 COLUMN 21-100
不为空。
我还有一张table叫- CONFIGURATION
. 它只有一列类型 VARCHAR
. 此表包含训练表中未列出的列的名称 NULL
. 所以它将包含值- COLUMN 21-100
.
我要做的是-只获取那些不为null的列的数据。所以我希望输出作为表中包含的数据点 COLUMN 21-100
. 这个数字可能每次都不同,也可以交错,比如说 COLUMN 1-10
为空且 COLUMN 11-25
不是 NULL
剩下的都是空的。
我正在考虑实现内部连接,但我没有它所需的表结构。
请提供一些提示。
谢谢。
1条答案
按热度按时间de90aj5v1#
您需要为此创建动态sql。
第一步-创建
ALL_COLUMNS
变量VARCHAR(5000)
数据类型。从你的CONFIGURATION
表选择要查询的列名。然后使用STRING_AGG
函数将它们聚合为单个值(在我的示例中COL1
列来自CONFIGURATION
表)。将输出分配给ALL_COLUMNS
变量第二步使用
EXECUTE IMMEDIATE
运行动态sql。添加ALL_COLUMNS
变量作为该查询的输入。下面是示例代码: