如何选择sap hana中不为空的列?

ehxuflar  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(948)

所以我有一个基本表- 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 剩下的都是空的。
我正在考虑实现内部连接,但我没有它所需的表结构。
请提供一些提示。
谢谢。

de90aj5v

de90aj5v1#

您需要为此创建动态sql。
第一步-创建 ALL_COLUMNS 变量 VARCHAR(5000) 数据类型。从你的 CONFIGURATION 表选择要查询的列名。然后使用 STRING_AGG 函数将它们聚合为单个值(在我的示例中 COL1 列来自 CONFIGURATION 表)。将输出分配给 ALL_COLUMNS 变量
第二步使用 EXECUTE IMMEDIATE 运行动态sql。添加 ALL_COLUMNS 变量作为该查询的输入。
下面是示例代码:

DO
BEGIN

/* First Step - create string with all column names separated by comma*/

    DECLARE ALL_COLUMNS VARCHAR(5000);

    SELECT  STRING_AGG(COL1,',' ORDER BY COL1)  INTO ALL_COLUMNS FROM CONFIGURATION;

/*Second Step - create dynamic SQL including variable from First Step*/

    EXECUTE IMMEDIATE ('SELECT ' || :ALL_COLUMNS  || ' FROM "TRAINING" ');

END

相关问题