SQL将变量赋值给SELECT语句中的函数结果

问题描述:

我有一个使用多次函数结果的SELECT语句。不是重复地敲击该函数,是否有一种方法可以将变量赋值给它以使语句更加高效,而且我不必继续敲击该函数?SQL将变量赋值给SELECT语句中的函数结果

过于简化的假想实施例编号:

DECLARE @Total Decimal(18,2) 

SELECT t.ClientName AS Customer, t.ClientID, 
--This function returns total sales for the Client 
@Total = dbo.functionSalesTotal(t.ClientID), 
@Total AS Sales, (@Total * 0.13) AS Tax, 
(@Total + (@Total *0.13)) AS TotalIncludingTax 
FROM table t 

子查询或apply是最好的方法:

SELECT t.ClientName AS Customer, t.ClientID, 
     v.total AS Sales, (v.Total * 0.13) AS Tax, 
     (v.Total + (v.Total *0.13)) AS TotalIncludingTax 
FROM table t CROSS APPLY 
    (VALUES (dbo.functionSalesTotal(t.ClientID)) as v(total); 
+0

功能可以由确定性 –