转:http://www.cnblogs.com/liuhailiang/archive/2012/08/13/2636863.html

复习一下t-sql 逻辑查询语句各个阶段是如何执行的

大多数编程语言中代码是按照编写的顺序来处理的,但在sql 中却不是按照顺序来执行

如下图所示

流程图:

From阶段表运算符Apply、Pivot、Unpivot不是ANSI标准,它是T-SQL中特有的扩展,用法也跟join差不多,关键字左右两边各有一个表作为输入,所有运算结果以虚拟表形式作为左输入继续与第二个表运算符运算,以此类推。

表表达式可以表示许多对象:真实的表,临时表,表变量,派生表,CTE,视图,表值函数

Apply:把右表表达式应用于左输入的每一行,右表表达式可以引用左输入中的列,对于左表的每一行,都要计算一次右边输入的表达式,这一步会把左边的每一行和来自右表达式的相应行进行匹配,并将生成的结果集合合并起来,返回组合后的结果。

Pivot:用于在列和行之间对数据进行旋转和透视转换,同时执行聚合运算,Unpivot则与之相反

posted on 2012-08-22 17:38  jackljf  阅读(123)  评论(0编辑  收藏  举报