復習一下t-sql 邏輯查詢語句各個階段是如何執行的
大多數編程語言中代碼是按照編寫的順序來處理的,但在sql 中卻不是按照順序來執行
如下圖所示
流程圖:
From階段表運算符Apply、Pivot、Unpivot不是ANSI標准,它是T-SQL中特有的擴展,用法也跟join差不多,關鍵字左右兩邊各有一個表作為輸入,所有運算結果以虛擬表形式作為左輸入繼續與第二個表運算符運算,以此類推。
表表達式可以表示許多對象:真實的表,臨時表,表變量,派生表,CTE,視圖,表值函數
Apply:把右表表達式應用於左輸入的每一行,右表表達式可以引用左輸入中的列,對於左表的每一行,都要計算一次右邊輸入的表達式,這一步會把左邊的每一行和來自右表達式的相應行進行匹配,並將生成的結果集合合並起來,返回組合后的結果。
Pivot:用於在列和行之間對數據進行旋轉和透視轉換,同時執行聚合運算,Unpivot則與之相反