问题描述
我对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.CodeHistory表:
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)