如何获取表中非空列的数据

2020-09-11 00:41发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我有一个包含数百个列的表,其中许多为空,并且我希望使用select语句,以便仅返回那些包含值的列。 这将帮助我更好地分析数据。 像这样:

从表名中选择(非空列);

我想选择所有具有至少一个非空值的列。

可以做到吗?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我有一个包含数百个列的表,其中许多为空,并且我希望使用select语句,以便仅返回那些包含值的列。 这将帮助我更好地分析数据。 像这样:

从表名中选择(非空列);

我想选择所有具有至少一个非空值的列。

可以做到吗?

付费偷看设置
发送
2条回答
派大星 ヾ
1楼 · 2020-09-11 01:37.采纳回答

不是HANA/SQLSCRIPT专家(我与Adaptive Server Enterprise/TSQL一起工作),但是可以为系统目录(可能是TABLE_COLUMNs)声明一个游标并获取列名,而不是为每个列硬编码INSERT。 count()在获取的名称上,在循环中插入#not_null?

干杯,
布雷特·哈尔福德



Nir深蓝
2楼-- · 2020-09-11 01:20

我可以使用以下过程来实现

但是我需要在不使用多个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; 结束

一周热门 更多>