2017-10-11 27 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

機能は決定によっても –

関連する問題