2020-09-11 00:41发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我有一个包含数百个列的表,其中许多为空,并且我希望使用select语句,以便仅返回那些包含值的列。 这将帮助我更好地分析数据。 像这样:
从表名中选择(非空列);
我想选择所有具有至少一个非空值的列。
可以做到吗?
不是HANA/SQLSCRIPT专家(我与Adaptive Server Enterprise/TSQL一起工作),但是可以为系统目录(可能是TABLE_COLUMNs)声明一个游标并获取列名,而不是为每个列硬编码INSERT。 count()在获取的名称上,在循环中插入#not_null?
干杯,布雷特·哈尔福德
我可以使用以下过程来实现
但是我需要在不使用多个insert语句和动态SQL的情况下知道更好的解决方案,因为一个表中大约有500列?
过程" a.db.procedures :: notnull"()
语言SQLSCRIPT
SQL安全调用程序-默认模式-
以BEGIN开头读取SQL数据/*****************************************编写过程逻辑 ******************************************/DECLARE ALL_COLUMNS_LIST NVARCHAR(5000);
声明col整数;
声明col2整数;
声明col3整数;
声明col4整数;
声明col5整数;
声明col6整数;
创建本地临时表#not_null(seq INTEGER,ALL_COLUMNS NVARCHAR(3000),COUNT1 INTEGER);
从"表"中选择COUNT(" COL_1")放入col1; 插入#not_null值('COL_1',:col1); 从"表"中选择COUNT(" COL_2")到col2; 插入#not_null值('COL_2',:col2); 从"表"中选择COUNT(" COL_3")IN到col3; 插入#not_null值('COL_3',:col3); 从"表"中选择COUNT(" COL_4")IN到col4; 插入#not_null值('COL_4',:col4); SELECT COUNT(" COL_5")从" table"进入col5; 插入#not_null值('COL_5',:col5); 从"表"中选择COUNT(" COL_6")INTO col6; 插入#not_null值('COL_6',:col6); --ALL_COUNT =从#not_null选择" ALL_COLUMNS",其中COUNT1> 1;
从#not_null WHERE COUNT1> 1中选择STRING_AGG(ALL_COLUMNS,','ORDER BY ALL_COLUMNS)进入ALL_COLUMNS_LIST。
立即执行('SELECT'||:ALL_COLUMNS_LIST ||'来自"表"');
DROP表#not_null; 结束
最多设置5个标签!
不是HANA/SQLSCRIPT专家(我与Adaptive Server Enterprise/TSQL一起工作),但是可以为系统目录(可能是TABLE_COLUMNs)声明一个游标并获取列名,而不是为每个列硬编码INSERT。 count()在获取的名称上,在循环中插入#not_null?
干杯,
布雷特·哈尔福德
我可以使用以下过程来实现
但是我需要在不使用多个insert语句和动态SQL的情况下知道更好的解决方案,因为一个表中大约有500列?
过程" a.db.procedures :: notnull"()
语言SQLSCRIPT
SQL安全调用程序-默认模式-
以BEGIN开头读取SQL数据/*****************************************编写过程逻辑 ******************************************/DECLARE ALL_COLUMNS_LIST NVARCHAR(5000);
声明col整数;
声明col2整数;
声明col3整数;
声明col4整数;
声明col5整数;
声明col6整数;
创建本地临时表#not_null(seq INTEGER,ALL_COLUMNS NVARCHAR(3000),COUNT1 INTEGER);
从"表"中选择COUNT(" COL_1")放入col1; 插入#not_null值('COL_1',:col1); 从"表"中选择COUNT(" COL_2")到col2; 插入#not_null值('COL_2',:col2); 从"表"中选择COUNT(" COL_3")IN到col3; 插入#not_null值('COL_3',:col3); 从"表"中选择COUNT(" COL_4")IN到col4; 插入#not_null值('COL_4',:col4); SELECT COUNT(" COL_5")从" table"进入col5; 插入#not_null值('COL_5',:col5); 从"表"中选择COUNT(" COL_6")INTO col6; 插入#not_null值('COL_6',:col6); --ALL_COUNT =从#not_null选择" ALL_COLUMNS",其中COUNT1> 1;
从#not_null WHERE COUNT1> 1中选择STRING_AGG(ALL_COLUMNS,','ORDER BY ALL_COLUMNS)进入ALL_COLUMNS_LIST。
立即执行('SELECT'||:ALL_COLUMNS_LIST ||'来自"表"');
DROP表#not_null; 结束
一周热门 更多>