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);
功能可以由确定性 –