2017-10-11 13 views
2

J'ai une instruction SELECT qui utilise le résultat d'une fonction plusieurs fois. Au lieu de tapoter répétitivement sur la fonction, y a-t-il un moyen de lui assigner une variable pour rendre la déclaration plus efficace et je n'ai pas besoin de continuer à appuyer sur la fonction?SQL Affecter la variable au résultat de la fonction dans SELECT Instruction

simplifié Excessivement Exemple de code Hypothétique:

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 

Répondre

1

Un sous-requête ou apply est la meilleure approche:

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

Fonction peut, par déterministe –