close

算是既有的功能了,

只需sql 2005以上,

事前資料準備,參考使用APPLY

建立2 * table ; 1 * table-valued function

 

Apply是將左表的每一行的直當作參數應用到右表(TVF),

並將結果當作輸出,而Apply分為兩種類型,

CROSS APPLY

            結果集排除使右表為空的左表資料行.

OUTER APPLY

            結果集包含使右表為空的左表資料行.

概念上就跟Inner Join 之於 Cross Apply 、 Left Join 之於 Outer Apply.

 

結果如下,

CROSS APPLY

SELECT D.deptid, D.deptname, D.deptmgrid
    ,ST.empid, ST.empname, ST.mgrid, ST.lvl
FROM Departments AS D
    CROSS APPLY fn_getsubtree(D.deptmgrid) AS ST;

sql_cross_apply.png

OUTER APPLY

SELECT D.deptid, D.deptname, D.deptmgrid
    ,ST.empid, ST.empname, ST.mgrid, ST.lvl
FROM Departments AS D
    OUTER APPLY fn_getsubtree(D.deptmgrid) AS ST;

sql_outer_apply.png

 

最後Apply的執行順序,先邏輯記算左表表達式,再把右表代表的表達式應用到左表的每一行.

 

arrow
arrow
    文章標籤
    sql apply
    全站熱搜
    創作者介紹
    創作者 abcg5 的頭像
    abcg5

    Aaron Yang

    abcg5 發表在 痞客邦 留言(0) 人氣()