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;
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;
最後Apply的執行順序,先邏輯記算左表表達式,再把右表代表的表達式應用到左表的每一行.
文章標籤
全站熱搜
留言列表