HANA函数替换为Oracle语法"以。。。先连接。。"

2020-08-17 04:31发布

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

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


在进行Hana建模时,我遇到了Oracle语法"以...开头...先于...连接。"。但是Hana不支持此分层查询,我不知道要解决此问题,您之前遇到过此问题吗? ?请与我联系

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

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


在进行Hana建模时,我遇到了Oracle语法"以...开头...先于...连接。"。但是Hana不支持此分层查询,我不知道要解决此问题,您之前遇到过此问题吗? ?请与我联系

付费偷看设置
发送
6条回答
大道至简
1楼 · 2020-08-17 05:22.采纳回答

正确的说法是,HANA不支持Oracle特定的语法" CONNECT BY PRIOR"。 大多数DBMS通过递归公用表表达式支持层次结构查询,但是HANA也不支持。

HANA提供了自己的一组层次结构函数。 您会在HANA文档中找到详细解释的内容。

这是链接有关层次结构函数的SQL参考文档。

请注意,它还列出了有关该主题的其他文档链接。

compass1988
2楼-- · 2020-08-17 05:20

谢谢 用于访问SAP社区以获取问题的答案。 既然你是 第一次在这里问一个问题,我建议您熟悉一下 使用 https://community.sap.com/resources/questions-and-answers (如果您 还没有),因为它提供了提示 用于准备可以引起我们成员回复的问题。 例如你 可以概述您采取了哪些步骤来找到答案(以及为什么它们没有帮助), 分享您所见/完成的屏幕截图,请确保您已应用 适当的标签,并使用更具描述性的主题行。 您更多的细节 提供,会员更有可能为您提供帮助。 您 还应确保您正在使用所有适当的标签,因此正确 专家可以找到您的问题。

应该 您可以根据需要修改问题,方法是选择"操作",然后选择"编辑" (尽管一旦有人回答了您的问题,您将失去编辑功能 问题-但是,如果发生这种情况,您可以在评论中保留更多详细信息。

最后, 如果您希望与读者交流,请考虑将图片添加到 你的个人资料。 操作方法如下: https://www.youtube.com/watch?v=F5JdUbyjfMA&list=PLpQebylwrd-s5 h6RtymfDpoz3vDS 。 通过使用您的照片个性化您的个人资料,可以鼓励读者 回应。

最佳 问候

Mynyna

SAP 社区主持人

lukcy2020
3楼-- · 2020-08-17 05:14

最后,我写了一个程序,这是我的答案

创建过程" HANA"。" HIERARCHICAL_AREACL_PRO"
 (
     SYMBOL NVARCHAR(10),-连接符号
     B_NODE NVARCHAR(10)-起始节点
   
 )
    
     语言SQLSCRIPT
     SQL安全调用者
 开始
     DECLARE STR NVARCHAR(200):='';
     DECLARE COTS INTEGER:= 1;
 从" HANA"中删除。" PARENT_SON_TREE_TEMP";
 从" HANA"中删除。" PARENT_SON_TREE_TEMP2";
 插入" HANA"。" PARENT_SON_TREE_TEMP"
 选择PK_FATHERAREA AS P_NODE,选择PK_AREACL AS NODE,:B_NODE || SYMBOL || NAME AS STR
 来自YOUR_TABLE
 在哪里PK_FATHERAREA(从您的表中选择PK_AREACL哪里PK_FATHERAREA =:B_NODE);
 从" HANA"中选择COUNT(*)转换为婴儿床。" PARENT_SON_TREE_TEMP"节点不为空;
 当成本<< 0时
 从" HANA"中删除。" PARENT_SON_TREE_TEMP2" A
 存在的位置(SELECT A. *从" HANA"。" PARENT_SON_TREE_TEMP2" AS C
 左加入YOUR_TABLE B
 开C.NODE = B.PK_FATHERAREA
 在哪里B.PK_FATHERAREA不为空
 AND A.NODE = C.NODE);
 INSERT INTO" HANA"。" PARENT_SON_TREE_TEMP2" SELECT * FROM" HANA"。" PARENT_SON_TREE_TEMP";
 从" HANA"中删除。" PARENT_SON_TREE_TEMP";
 插入" HANA"。" PARENT_SON_TREE_TEMP"
 选择
 A.NODE AS P_NODE,
 B.PK_AREACL AS NODE,
 A.STR || SYMBOL || IFNULL(B.NAME,'')AS STR
 来自" HANA"。" PARENT_SON_TREE_TEMP2" A
 左加入YOUR_TABLE B
 开启A.NODE = B.PK_FATHERAREA
 其中B.PK_AREACL不为NULL;
 从" HANA"中选择COUNT(*)转换为婴儿床。" PARENT_SON_TREE_TEMP"节点不为空;
 结束时;
 从" HANA"删除。" HIERARCHICAL_AREACL";
 插入" HANA"。" HIERARCHICAL_AREACL"
 从" HANA"中选择结果,选择NODE,RTRIM(STR,:SYMBOL)。" PARENT_SON_TREE_TEMP2";
 END; 
太Q了
4楼-- · 2020-08-17 05:12

您问了一个问题。 不要忘记将对您最有帮助的答案标记为正确。 谢谢!

对于读者而言,在您离开之前,请不要忘记对答案进行上下投票。 您也可以对问题进行投票。

谢谢。

三十六小时_GS
5楼-- · 2020-08-17 05:02

关于文档,只需转到 help.sap.com/hana 并输入搜索词。 例如,Hierachy返回以下内容:

愤怒的猪头君
6楼-- · 2020-08-17 05:23

对我有用。谢谢。

一周热门 更多>