在SAP HANA Express中使用HIERARCHY函数

2020-09-10 14:24发布

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

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


大家好,

我正在尝试解决我面临的一些挑战。 但是我很困惑,希望能从社区中获得一些帮助。

我有下面的表格和数据。

创建表t_demo_time(parent_id VARCHAR(32),node_id VARCHAR(32),valid_from DATE,valid_until DATE);

 插入t_demo_time VALUES(NULL,'T1','2011-01-01','9999-12-31');
 插入t_demo_time VALUES('T1','U1','2011-07-01','9999-12-31');
 插入t_demo_time VALUES('U1','V1','2011-07-01','2012-12-31');
 插入t_demo_time VALUES('V1','W1','2011-08-01','2012-12-31');

 插入t_demo_time VALUES('U1','V2','2013-01-01','2016-12-31');
 插入t_demo_time VALUES('V2','W2','2013-01-01','2016-12-31');

 插入t_demo_time VALUES('T1','V1','2013-01-01','2016-12-31');
 插入t_demo_time VALUES('V1','W1','2013-01-01','2016-12-31');
 

我正在尝试创建一个与时间有关的父子层次结构。 如您在我的数据上所看到的,V1在2013年1月1日从父U1移到了T1。

我认为我可以使用 SQL函数解决了我的问题。 但是到目前为止,我还不走运。

如果我使用通用生成器函数,那么我的父级为U1的行V1突然属于父级T1。

如果我尝试使用我认为可以解决问题的HIERARCHY_TEMPORAL函数,则会收到错误消息:

SAP DBTech JDBC:[5089]:层次结构错误:层次结构操作期间的内部错误。 推送无效时间间隔:第10行第6列(在pos 210)

这是我的查询,给了我推送错误。

选择
     boundary_rank AS等级,
     archive_tree_size AS tree_size,
     boundary_parent_rank作为parent_rank,
     archive_level ASlevel,
     parent_id,
     node_id,
     valid_from,
     有效期至
 从HIERARCHY_TEMPORAL(来源t_demo_time
     SIBLING ORDERBY node_id,valid_from
     VALIDFROM'2011-01-01'UNTIL'2019-12-31'); 

我也尝试过这个,但是没有任何输出。

即时临时列#h_demo_time AS(SELECT * FROM HIERARCHY(SOURCE t_demo_time
     SIBLING ORDERBY node_id)ORDERBY
     boundary_rank);从#h_demo_time选择*; SELECT
     h2.hierarchy_rank AS排名,
     h2.hierarchy_tree_size AS tree_size,
     h2.hierarchy_parent_rank作为parent_rank,
     h2.hierarchy_level ASlevel,
     h2.parent_id,
     h2.node_id,
     h2.valid_from,
     h2.valid_until,
     h2.hierarchy_level-h1.hierarchy_level ASdistance,
     h1.hierarchy_rank AS start_rank
 FROM#h_demo_time AS h1,#h_demo_time AS h2
 哪里
       h2.hierarchy_parent_rank = h1.hierarchy_rank
       AND h2.valid_from> h1.valid_from
       AND h2.valid_until 
 

希望有人帮助

(114.4 kB)

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

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


大家好,

我正在尝试解决我面临的一些挑战。 但是我很困惑,希望能从社区中获得一些帮助。

我有下面的表格和数据。

创建表t_demo_time(parent_id VARCHAR(32),node_id VARCHAR(32),valid_from DATE,valid_until DATE);

 插入t_demo_time VALUES(NULL,'T1','2011-01-01','9999-12-31');
 插入t_demo_time VALUES('T1','U1','2011-07-01','9999-12-31');
 插入t_demo_time VALUES('U1','V1','2011-07-01','2012-12-31');
 插入t_demo_time VALUES('V1','W1','2011-08-01','2012-12-31');

 插入t_demo_time VALUES('U1','V2','2013-01-01','2016-12-31');
 插入t_demo_time VALUES('V2','W2','2013-01-01','2016-12-31');

 插入t_demo_time VALUES('T1','V1','2013-01-01','2016-12-31');
 插入t_demo_time VALUES('V1','W1','2013-01-01','2016-12-31');
 

我正在尝试创建一个与时间有关的父子层次结构。 如您在我的数据上所看到的,V1在2013年1月1日从父U1移到了T1。

我认为我可以使用 SQL函数解决了我的问题。 但是到目前为止,我还不走运。

如果我使用通用生成器函数,那么我的父级为U1的行V1突然属于父级T1。

如果我尝试使用我认为可以解决问题的HIERARCHY_TEMPORAL函数,则会收到错误消息:

SAP DBTech JDBC:[5089]:层次结构错误:层次结构操作期间的内部错误。 推送无效时间间隔:第10行第6列(在pos 210)

这是我的查询,给了我推送错误。

选择
     boundary_rank AS等级,
     archive_tree_size AS tree_size,
     boundary_parent_rank作为parent_rank,
     archive_level ASlevel,
     parent_id,
     node_id,
     valid_from,
     有效期至
 从HIERARCHY_TEMPORAL(来源t_demo_time
     SIBLING ORDERBY node_id,valid_from
     VALIDFROM'2011-01-01'UNTIL'2019-12-31'); 

我也尝试过这个,但是没有任何输出。

即时临时列#h_demo_time AS(SELECT * FROM HIERARCHY(SOURCE t_demo_time
     SIBLING ORDERBY node_id)ORDERBY
     boundary_rank);从#h_demo_time选择*; SELECT
     h2.hierarchy_rank AS排名,
     h2.hierarchy_tree_size AS tree_size,
     h2.hierarchy_parent_rank作为parent_rank,
     h2.hierarchy_level ASlevel,
     h2.parent_id,
     h2.node_id,
     h2.valid_from,
     h2.valid_until,
     h2.hierarchy_level-h1.hierarchy_level ASdistance,
     h1.hierarchy_rank AS start_rank
 FROM#h_demo_time AS h1,#h_demo_time AS h2
 哪里
       h2.hierarchy_parent_rank = h1.hierarchy_rank
       AND h2.valid_from> h1.valid_from
       AND h2.valid_until 
 

希望有人帮助

(114.4 kB)
付费偷看设置
发送
4条回答
落灬小鱼
1楼-- · 2020-09-10 15:25

您好,

我发现您在select语句中未正确提及字段名称,请仔细检查。

此外,如果您打算获取一个范围内的值 日期,那么您可以在查询中尝试使用" BETWEEN"运算符。

希望这会有所帮助。

能不能别闹
2楼-- · 2020-09-10 15:19

是的,很抱歉,这是格式问题。

三十六小时_GS
3楼-- · 2020-09-10 15:28

在HANA上进行了测试 Express 2.0 SPS03系统具有您描述的数据。 对我来说,它工作正常。 第三次问:您使用的是什么HANA版本?

Tong__Ming
4楼-- · 2020-09-10 15:28

对不起,我的版本是HANA 2 sps03。所以应该没问题。 我的硬件设置如下所示。

一周热门 更多>