cwui 2024-07-11 14:37 采纳率: 27.8%
浏览 11
已结题

SAP HANA SQL Script 查找值

img

注意: SAP HANA SQL Script 不支持 CTE 和 with Recursive as !

如上图,表TAB1 , ID = 123 找到 ID_F = 456
同一个表,把456带入ID , 找到4个值,
ID_F = 789
ID_F = 111
ID_F = 333
ID_F = 444
再把这4个值带入同一个表TAB1的ID , 继续查找ID_F,如果ID_F为空,则ID保存下来
即 输入123,最后结果为
789
333
222
666
用SAP HANA SQL Script 怎么写 ?

img

  • 写回答

22条回答 默认 最新

  • 阿里嘎多学长 2024-07-11 14:37
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    根据你的需求,我们需要编写一个SAP HANA SQL Script来实现递归查找。虽然SAP HANA SQL Script不支持CTE和WITH RECURSIVE AS,但我们可以使用其他方法来实现类似的功能。以下是一个可能的解决方案:

    1. 首先,创建一个临时表来存储递归查找过程中的ID和ID_F值。
    2. 然后,使用一个循环来不断更新这个临时表,直到没有新的ID_F可以找到。
    3. 最后,从临时表中选择出ID_F为空的ID值。

    这里是一个简化的示例代码,展示了如何实现这个过程:

    -- 创建一个临时表来存储递归查找的结果
    CREATE LOCAL TEMPORARY TABLE #RecursiveResults (
        ID INT,
        ID_F INT
    );
    
    -- 插入初始值
    INSERT INTO #RecursiveResults (ID, ID_F)
    SELECT 123, 456 FROM DUAL;
    
    -- 使用一个循环来更新临时表
    WHILE EXISTS (SELECT 1 FROM #RecursiveResults WHERE ID_F IS NOT NULL)
    DO
        -- 从TAB1中找到当前ID_F对应的新ID
        INSERT INTO #RecursiveResults (ID, ID_F)
        SELECT DISTINCT t.ID, t.ID_F
        FROM TAB1 t
        JOIN #RecursiveResults r ON t.ID = r.ID_F
        WHERE t.ID_F IS NULL;
    
        -- 清除已经处理过的ID_F值
        UPDATE #RecursiveResults SET ID_F = NULL WHERE ID_F IS NOT NULL;
    END WHILE;
    
    -- 选择出ID_F为空的ID值
    SELECT ID FROM #RecursiveResults WHERE ID_F IS NULL;
    

    请注意,这个示例代码是一个简化的版本,可能需要根据你的具体需求进行调整。例如,你可能需要添加逻辑来确保ID值的唯一性,或者处理可能出现的其他特殊情况。

    由于SAP HANA SQL Script的限制,实现递归查找可能需要一些创造性的解决方案。如果你需要更具体的帮助,可以提供更多的上下文信息,例如表的结构和数据示例,这样我可以提供更准确的指导。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月15日
  • 修改了问题 7月11日
  • 修改了问题 7月11日
  • 创建了问题 7月11日

悬赏问题

  • ¥15 问题重发,R语言:代码运行过程中出现如下警告,请求如何解决!
  • ¥15 苍穹外卖拦截器token为null
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵
  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了
  • ¥15 陆空双模式无人机怎么做
  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关
  • ¥15 C#中的编译平台的区别影响