在SQL查询中使用函数的结果

时间:2016-12-16 13:36:42

标签: sql sql-server

我有一个SQL(服务器)查询,如下所示:

INSERT INTO MyTable (MyId, CalcAmount1, CalcAmount2) 
SELECT a.Id, a.Value1 - CalcValue, myFunc(a.Value1, a.Value2) AS CalcValue
FROM MyTable2 a
WHERE a.SomeValue = 35

所以,问题是,我可以做一些类似于我正在尝试上面MyFunc()的结果的事情;也就是说,我可以对结果进行别名并在查询中使用它吗?如果没有,还有另一种方法可以达到同样的目的吗?显然,我不想两次调用该函数。

1 个答案:

答案 0 :(得分:1)

您可以使用子查询或CTE。 SQL Server还允许您使用横向连接执行此操作:

INSERT INTO MyTable (MyId, CalcAmount1, CalcAmount2) 
    SELECT a.Id, a.Value1 - v.CalcValue, v.CalcValue
    FROM MyTable2 a OUTER APPLY
         (VALUES (myFunc(a.Value1, a.Value2) )
         ) v(CalcValue)
    WHERE a.SomeValue = 35;