2016年1月13日 星期三

【T-SQL】 APPLY CROSS APPLY 與 OUTER APPLY 使用

資料庫相容性層級至少必須是 90

相關範本1:https://technet.microsoft.com/zh-tw/library/ms175156(v=sql.105).aspx
說明:

相關範本2:https://www.mssqltips.com/sqlservertip/1958/sql-server-cross-apply-and-outer-apply/
說明:有各用的APPLY 用法

CROSS APPLY
說明:交叉比對 Inner Join ,兩邊有符合資料才會出現

OUTER APPLY
說明:像 Left join 方法,左邊為主,右邊為輔,若右邊沒有ID 符合左邊ID,就會出現NULL


使用說明:
1.APPLY 使用,回傳 table , 但多筆row的話 ,會造資料變成 Cross Join 方法,N x N 資料表
除非有加上 Where 條件

2.OUTER APPLY 使用,若回傳 table 單筆 row 的話,就會像Left Join

3.Corss APPLY 使用,若回傳 table 單筆 row 的話,就會像Inner Join

4.APPLY 使用方法有兩種
第一種:
---------------------------------
SELECT * FROM A
Outer Apply
(
 SELECT * From B
 Where B.id = A.id
)Temp
---------------------------------

第二種
SELECT * FROM A
Outer Apply FunctionName(A.id) Temp

---------------------------------