如何 select 在 SAP HANA 中不为空的列?

How to select columns which are not null in SAP HANA?

所以我有一个基础 table - TRAINING,它有 100 列。有些列将完全为 NULL,有些将包含值。所以说 COLUMN 1-20 是 null 而 COLUMN 21-100 不是 NULL。

我有另一个 table 叫 - CONFIGURATION。它只有一列 VARCHAR 类型。此 table 包含 TRAINING table 中不是 NULL 的那些列的名称。所以它将包含值 - COLUMN 21-100.

我想做的是- 只获取非NULL 的那些列的数据。所以我希望输出作为 table COLUMN 21-100 中包含的数据点。这个数字每次都可能不同,也可以交错,比如 COLUMN 1-10 是 NULL,COLUMN 11-25 不是 NULL,剩下的又是 NULL。

我正在考虑实施内部联接,但我没有它所需的 table 结构。

请提供一些提示。

谢谢。

您需要为此创建动态 SQL。

第一步 - 创建VARCHAR(5000)数据类型的ALL_COLUMNS变量。 来自您要查询的 CONFIGURATION table select 列名称。然后使用 STRING_AGG 函数将它们聚合成单个值(在我的示例中 COL1 是来自 CONFIGURATION table 的列)。将输出分配给 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