我需要知道如何从函数设置RETURN值,以便可以在同一查询中再次使用它。
问题:
SELECT
A.Field1,
A.Field2,
[TheFunction](ID,3.4,'test') SumOfAverages,
[TheFunction2]([TheFunction](ID,3.4,'test'), 1,2)) Summary
FROM ...
你可以看到我在Function2中再次输入函数作为参数,但是我想将它设置为变量,所以我不需要这样做。
我尝试过做
[TheFunction](ID,3.4,'test') SumOfAverages,
[TheFunction2](SumOfAverages, 1,2)) Summary
我不介意在外部SELECT中执行此操作,但我不想加入INNER选择,因为我已经有字段来获取结果。
我将不胜感激任何帮助
由于
答案 0 :(得分:1)
如果要重新使用该值,则需要使用子查询或CTE:
SELECT t.*,
[TheFunction2](SumOfAverages, 1,2)) Summary
FROM (SELECT A.Field1, A.Field2,
[TheFunction](ID,3.4,'test') SumOfAverages,
FROM ...
) t
答案 1 :(得分:1)
您应该可以通过将第一个函数转换为单独的SELECT
子句来完成此操作。实现这一目标的典型方法是使用CTE,子查询或APPLY
。类似的东西:
SELECT
A.Field1,
A.Field2,
t.SumOfAverages,
[TheFunction2](t.SumOfAverages, 1,2)) Summary
FROM <existing tables>
CROSS APPLY (SELECT TheFunction(ID,3.4,'test') as SumOfAverages) t
原因是在每个SELECT
子句中,系统意味着能够并行评估所有列表达式 - 因此语言禁止表达式之间的任何依赖。