我有一个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()
的结果的事情;也就是说,我可以对结果进行别名并在查询中使用它吗?如果没有,还有另一种方法可以达到同样的目的吗?显然,我不想两次调用该函数。
答案 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;