代码之家  ›  专栏  ›  技术社区  ›  Boudhayan Dev

如何选择SAP HANA中不为空的列?

  •  0
  • Boudhayan Dev  · 技术社区  · 7 年前

    所以我有一个基本表- TRAINING ,它有100列。有些列将完全为空,有些列将包含值。所以说吧 COLUMN 1-20 为空且 COLUMN 21-100

    我还有一张桌子叫- CONFIGURATION VARCHAR . 此表包含训练表中未列出的列的名称 NULL 第21-100栏 .

    我要做的是-只获取那些不为NULL的列的数据。所以我希望输出作为表中包含的数据点 第21-100栏 COLUMN 1-10 为空且 COLUMN 11-25 剩下的都是空的。

    我正在考虑实现内部连接,但我没有它所需的表结构。

    谢谢。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Konrad Z.    7 年前

    您需要为此创建动态SQL。

    第一步 -创建 ALL_COLUMNS 变量 VARCHAR(5000) 数据类型。 从你的 CONFIGURATION 表选择要查询的列名。然后使用 STRING_AGG 函数将它们聚合为单个值(在我的示例中 COL1 配置 表)。将输出分配给 所有\u列 变量

    使用 EXECUTE IMMEDIATE 运行动态SQL。添加 所有\u列 变量作为该查询的输入。

    下面是示例代码:

    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