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 

Ich habe eine Abfrage wie oben. Ich habe Spalte, die eine Ausgabe von Fn1 ist. Ich wollte diesen Ausgang zu anderer Funktion fn2 verwenden. In diesem Fall kann ich nicht die Col3 direkt in Fn2 verwenden, also habe ich zwei Funktionen aufgeteilt und siehe unten. Ich wollte wissen, ob ich mich in die richtige Richtung bewege, ist es richtig, was ich tue oder gibt es einen besseren Weg? Im kommentierten Teil von View1 wird die Funktion fn1 zweimal aufgerufen? oder SQL Server kümmert sich um die Optimierung?Funktion in SQL Select-Anweisung

Antwort

0

Sie dies tun coudl ...

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