如何将此表值函数写入单个视图

问题描述

我对sql世界还很陌生。我有一个下面的表值函数,我需要将其转换为PRESTO sql中的单个视图,并在创建的视图的where条件中传递提供的代码ID。我对创建为View感到有些困惑,因为他们在表值函数内的cte中使用了递归概念。任何信息或想法都会非常有帮助。

这是表值函数定义:

create function fn_getparent
(  
 @CodeId INTEGER  
)  
returns INTEGER  
as  
begin  
  
 declare @Result INTEGER;  
  
 with CTE1 (NewCodeId,[Level],ReleaseNumber)  
 as  
 (  
  select   
   @CodeId as NewCodeId,0 as [Level],0 as ReleaseNumber  
       
  union all  
    
  select   
   cc.NewCodeId,[Level] + 1,cc.ReleaseNumber  
  from code.Conversion cc  
  inner join CTE1 c  
   on c.NewCodeId = cc.OldCodeId  
   and c.ReleaseNumber <= cc.ReleaseNumber  
  inner join Code.CodeHistory ch  
   on ch.OldCode = cc.OldCodeId  
   and ch.NewCode = cc.NewCodeId  
 )  
 select top 1   
  @Result = NewCodeId  
 from CTE1  
 order by [Level] desc;  
  
 return @Result; 

样品表数据:

代码会话表:

Code.Conversation Table

Code.CodeHistory表:

Code.CodeHistory Table

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)