0
CREATE VIEW View1 
    AS 
    SELECT Col1, 
     Col2, 
     dbo.fn1(col2) as Col3 
    FROM TestTable 

    /* 
    --Instead of writing below query I created a new View View2 


    SELECT Col1, 
     Col2, 
     dbo.fn1(col2) as Col3 
     dbo.fn2(dbo.fn1(col2)) as Col4 
    FROM TestTable 
    */ 

    CREATE VIEW View2 
    AS 
    SELECT Col1, 
     Col2, 
     Col3, 
     dbo.fn3(col3) as Col4 
    FROM TestTable 

J'ai une requête comme ci-dessus. J'ai une colonne qui est une sortie de fn1. Je voulais utiliser cette sortie pour l'autre fonction fn2. Dans ce cas, je ne peux pas utiliser le col3 directement dans fn2 donc j'ai divisé deux fonctions et voir comme ci-dessous. Je voulais savoir si je me déplaçais dans la bonne direction, est-ce que je fais ce que je fais ou y a-t-il une meilleure façon de le faire? Dans la partie commentée de la vue1, la fonction fn1 sera appelée deux fois? ou SQL Server prendra-t-il soin de l'optimiser?Fonction dans SQL Select Instruction

Répondre

0

Vous coudl faites cela ...

SELECT 
    Col1, 
    Col2, 
    col3, 
    dbo.fn2(col3) AS Col4 
FROM 
    (
    SELECT 
     Col1, 
     Col2, 
     dbo.fn1(col2) as Col3 
    FROM 
     TestTable 
    ) foo 
Questions connexes