2017-10-11 130 views
2

我有一個使用多次函數結果的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 

回答

1

子查詢或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

功能可以由確定性 –

相關問題