cross apply 和 outer apply
使用APPLY运算符可以实现查询操作的外部表表达式返回的每个调用表值函数。表值函数作为右输入,外部表表达式作为左输入。
通过对右输入求值来获得左输入每一行的计算结果,生成的行被组合起来作为最终输出。APPLY 运算符生成的列的列表是左输入
中的列集,后跟右输入返回的列的列表。
APPLY存在两种形式: CROSS APPLY 和 OUTER APPLY .
CROSS APPLY 仅返回外部表中通过表值函数生成结果集的行。
OUTER APPLY 既返回生成结果集的行,又返回不生成结果集的行,其中表值函数生成的列中的值为NULL.
create table employee  
(  
emp_id int not null,  
mgr_id int null,  
emp_name varchar(20) not null,  
emp_salary money not null,  
constraint pk_id primary key(emp_id)  
)
insert into employee select 1,null,'忘忘',4500  
union all  
select 2,1,'找找',2500  
union all  
select 3,2,'你会',3500  
union all  
select 4,3,'牛牛',1500  
union all  
select 5,4,'得到',500  
union all  
select 6,5,'爱的色放',300  
union all  
select 7,6,'爱上对方',1000  
union all  
select 8,4,'阿萨德',300  
union all  
select 9,8,'阿斯顿',1000
create table departments  
(  
dep_id int identity(1,1) primary key,  
dep_name varchar(30) not null,  
dep_m_id int null references employee(emp_id)  
)  
insert departments select '生成部门',2  
union all  
select '销售部门',7  
union all  
select '加工部门',8  
union all  
select '库存部门',9  
union all  
select '管理部门',4  
union all  
select '保卫部门',null
create function gtree  
 (  
 @emp_id int  
 )  
 returns @tree table  
 (  
 emp_id int not null,  
 emp_name varchar(20) not null,  
 mgr_id int null,  
 lvl int not null  
 )  
 as  
 begin  
 with emp_subtree(emp_id,emp_name,mgr_id,lvl)  
  as  
  (  
  select emp_id,emp_name,mgr_id,0 from employee where  emp_id=@emp_id  
  union all  
  select e.emp_id,e.emp_name,e.mgr_id,es.lvl+1  
   from employee e join emp_subtree es on e.emp_id=es.emp_id  
  )  
  insert @tree select * from emp_subtree  
  return  
 end  
 select * from employee
select * from departments as a  
 cross apply  
 gtree(a.dep_m_id) as b
select * from departments as a  
 outer apply  
 gtree(a.dep_m_id) as b
cross apply 和 outer apply的更多相关文章
- SQL 关于apply的两种形式cross apply 和 outer apply(转)
		
转载链接:http://www.cnblogs.com/shuangnet/archive/2013/04/02/2995798.html apply有两种形式: cross apply 和 oute ...
 - SQLServer count函数、cross apply和outer apply、
		
1.COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入)2.COUNT(*) 函数返回表中的记录数 select * from TABLE_1 T1 outer ap ...
 - SQL 关于apply的两种形式cross apply 和 outer apply
		
SQL 关于apply的两种形式cross apply 和 outer apply 例子: CREATE TABLE [dbo].[Customers]( ) COLLATE Chinese_PRC_ ...
 - SQL关于apply的两种形式cross apply和outer apply(转载)
		
SQL 关于apply的两种形式cross apply 和 outer apply apply有两种形式: cross apply 和 outer apply 先看看语法: <lef ...
 - SqlSever 使用 CROSS APPLY 与 OUTER APPLY 连接查询
		
前言 日常开发中遇到多表查询时,首先会想到 INNER JOIN 或 LEFT OUTER JOIN 等等,但是这两种查询有时候不能满足需求.比如,左表一条关联右表多条记录时,我需要控制右表的某一条或 ...
 - SQL Server连接查询之Cross Apply和Outer Apply的区别及用法(转载)
		
先简单了解下cross apply的语法以及会产生什么样的结果集吧!示例表: SELECT * FROM tableA CROSS APPLY tableB 两张表直接连接,不需要任何的关联条件,产生 ...
 - 使用 CROSS APPLY 与 OUTER APPLY 连接查询
		
Ø 前言 日常开发中遇到多表查询时,首先会想到 INNER JOIN 或 LEFT OUTER JOIN 等等,但是这两种查询有时候不能满足需求.比如,左表一条关联右表多条记录时,我需要控制右表的某 ...
 - CROSS APPLY和 OUTER APPLY
		
背景 好强大的sql,但是我好想真极少用过这两个函数,再次强调,不要总是用sql解决问题.让人欢喜让人悲的sql. -- cross applyselect * from TABLE_1 T1cr ...
 - <转>SQL Server CROSS APPLY and OUTER APPLY
		
Problem SQL Server 2005 introduced the APPLY operator, which is like a join clause and it allows joi ...
 - SQL Server 关于CROSS APPLY 和 OUTER APPLY应用
		
先看看语法: <left_table_expression> {cross|outer} apply<right_table_expression> 再让我们了解一下appl ...
 
随机推荐
- 微软工程师主讲的SqlServer2005视频教程
			
http://www.cnblogs.com/slcfhr/archive/2008/11/24/1340283.html SQL Server 2005盛宴系列之一:SQL Server 2005产 ...
 - Python 字符串前面加u,r,b的含义
			
1.字符串前加 u 例:u"我是含有中文字符组成的字符串." 作用: 后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时 ...
 - day12 继承
			
设计原则:开闭原则:对于拓展open,对于修改close. 类与类的关系:1.is a(继承关系) 2.has a(组合关系) 继承的优点:1.代码的可重用性 2.父类的属性和方法用于子类 3.子类可 ...
 - C语言中的指针和内存泄漏几种情况
			
引言 原文地址:http://www.cnblogs.com/archimedes/p/c-point-memory-leak.html,转载请注明源地址. 对于任何使用C语言的人,如果问他们C语言的 ...
 - Tomcat开启Debug模式
			
在bin/catalina.sh中添加如下行,将tomcat重启即可. 注:以下标红的7002需将其改成对象的tomcat端口即可! JAVA_OPTS=,server=y,suspend=n -Df ...
 - c# dev GridControl多选当前行显示样式问题
			
由于Dev GridControl在支持多选的时候,如果如果焦点行单独加了样式,Appearance-->FocusedRow & HideSelectionRow 这个时候,鼠标焦 ...
 - 《设计模式》-原则四:接口隔离原则(ISP)
			
啊!天气很热啊,回来洗个澡,做个饭吃完后 又出了一身汗,真后悔先洗澡. 加油坚持学习,今天要学的是“接口隔离原则” 意思是说:在设计的时候使用多个专门的接口比使用一个总的接口好很多.一个类对另一个类的 ...
 - 【CodeForces】906 D. Power Tower 扩展欧拉定理
			
[题目]D. Power Tower [题意]给定长度为n的正整数序列和模数m,q次询问区间[l,r]累乘幂%m的答案.n,q<=10^5,m,ai<=10^9. [算法]扩展欧拉定理 [ ...
 - Redis(Remote Dictionary Server)入门
			
说说特性 存储结构:键值对支持多种数据类型,包括字符串类型,散列类型,列表类型,集合类型,有序集合类型. 内存存储与持久化:支持将内存中的数据异步写入磁盘中. 丰富的功能:支持为每个键值对设置生存时间 ...
 - Concat层解析
			
Concat层的作用就是将两个及以上的特征图按照在channel或num维度上进行拼接,并没有eltwise层的运算操作,举个例子,如果说是在channel维度上进行拼接conv_9和deconv_9 ...