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 

我有类似上面的查询。我有一列是fn1的输出。我想将该输出用于其他函数fn2。在这种情况下,我不能直接在fn2中使用col3,所以我分割了两个函数和视图,如下所示。我想知道我正朝着正确的方向发展,我正在做的是正确的还是有更好的方法来做到这一点?在View1的注释部分将函数fn1调用两次?或者SQL Server会照顾优化呢?SQL Select语句中的函数

回答

0

您coudl做到这一点...

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