



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用 APPLYAPPLY 运算符的左操作数和右操作数都是表表达式。这些操作数之间的主要区别是,right_table_source 可以使用表值函数,从 left_table_source 获取一个列作为函数的参数之一。left_table_source 可以包括表值函数,但不能以来自 right_table_source 的列作为参数。APPLY 运算符通过以下方式工作,以便为 FROM 子句生成表源:1. 对 left_table_source 的每行计算 right_table_source 的值来生成行集。right_table_source 中的值依赖于 left_table_source。right_table_source 可以按以下方式近似表示:TVF(left_table_source.row),其中,TVF 是表值函数。2. 通过执行 UNION ALL 操作,将计算 right_table_source 的值时为每行生成的结果集与 left_table_source 组合起来。APPLY 运算符的结果生成的列的列表是来自 left_table_source(与来自 right_table_source 的列的列表相组合)的一组列。SQL Server 2008 联机丛书 使用 APPLY访问和更改数据库数据 查询基础知识 使用 FROM 子句 使用 APPLY 运算符可以为实现查询操作的外部表表达式返回的每个行调用表值函数。表值函数作为右输入,外部表表达式作为左输入。通过对右输入求值来获得左输入每一行的计算结果,生成的行被组合起来作为最终输出。APPLY 运算符生成的列的列表是左输入中的列集,后跟右输入返回的列的列表。注意:若要使用 APPLY,数据库兼容级别必须为 90。 APPLY 有两种形式:CROSS APPLY 和 OUTER APPLY。CROSS APPLY 仅返回外部表中通过表值函数生成结果集的行。OUTER APPLY 既返回生成结果集的行,也返回不生成结果集的行,其中表值函数生成的列中的值为 NULL。例如,考虑下列表 Employees 和 Departments:-Create Employees table and insert values.CREATE TABLE Employees( empid int NOT NULL ,mgrid int NULL ,empname varchar(25) NOT NULL ,salary money NOT NULL CONSTRAINT PK_Employees PRIMARY KEY(empid);GOINSERT INTO Employees VALUES(1 , NULL, Nancy , $10000.00);INSERT INTO Employees VALUES(2 , 1 , Andrew , $5000.00);INSERT INTO Employees VALUES(3 , 1 , Janet , $5000.00);INSERT INTO Employees VALUES(4 , 1 , Margaret, $5000.00);INSERT INTO Employees VALUES(5 , 2 , Steven , $2500.00);INSERT INTO Employees VALUES(6 , 2 , Michael , $2500.00);INSERT INTO Employees VALUES(7 , 3 , Robert , $2500.00);INSERT INTO Employees VALUES(8 , 3 , Laura , $2500.00);INSERT INTO Employees VALUES(9 , 3 , Ann , $2500.00);INSERT INTO Employees VALUES(10, 4 , Ina , $2500.00);INSERT INTO Employees VALUES(11, 7 , David , $2000.00);INSERT INTO Employees VALUES(12, 7 , Ron , $2000.00);INSERT INTO Employees VALUES(13, 7 , Dan , $2000.00);INSERT INTO Employees VALUES(14, 11 , James , $1500.00);GO-Create Departments table and insert values.CREATE TABLE Departments( deptid INT NOT NULL PRIMARY KEY ,deptname VARCHAR(25) NOT NULL ,deptmgrid INT NULL REFERENCES Employees);GOINSERT INTO Departments VALUES(1, HR, 2);INSERT INTO Departments VALUES(2, Marketing, 7);INSERT INTO Departments VALUES(3, Finance, 8);INSERT INTO Departments VALUES(4, R&D, 9);INSERT INTO Departments VALUES(5, Training, 4);INSERT INTO Departments VALUES(6, Gardening, NULL);Departments 表中的多数部门都具有一个经理 ID,这些 ID 与 Employees 表中的雇员相对应。以下表值函数接受雇员 ID 作为参数,并返回该雇员和他/她的所有下属。CREATE FUNCTION dbo.fn_getsubtree(empid AS INT) RETURNS TREE TABLE( empid INT NOT NULL ,empname VARCHAR(25) NOT NULL ,mgrid INT NULL ,lvl INT NOT NULL)ASBEGIN WITH Employees_Subtree(empid, empname, mgrid, lvl) AS ( - Anchor Member (AM) SELECT empid, empname, mgrid, 0 FROM Employees WHERE empid = empid UNION all - Recursive Member (RM) SELECT e.empid, e.empname, e.mgrid, es.lvl+1 FROM Employees AS e JOIN Employees_Subtree AS es ON e.mgrid = es.empid; ) INSERT INTO TREE SELECT * FROM Employees_Subtree; RETURNENDGO若要返回每个部门经理的各级下属,请使用以下查询。SELECT D.deptid, D.deptname, D.deptmgrid ,ST.empid, ST.empname, ST.mgridFROM Departments AS D CROSS APPLY fn_getsubtree(D.deptmgrid) AS ST;下面是结果集: deptid deptname deptmgrid empid empname mgrid lvl- - - - - - -1 HR 2 2 Andrew 1 01 HR 2 5 Steven 2 11 HR 2 6 Michael 2 12 Marketing 7 7 Robert 3 02 Marketing 7 11 David 7 12 Marketing 7 12 Ron 7 12 Marketing 7 13 Dan 7 12 Marketing 7 14 James 11 23 Finance 8 8 Laura 3 04 R&D 9 9 Ann 3 05 Training 4 4 Margaret 1 05 Training 4 10 Ina 4 1注意,Departments 表中每一行复制的次数与针对部门经理执行 fn_getsubt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版八年级数学上册《13.3三角形的内角与外角》同步练习题及答案
- 音乐招教考试试题及答案
- 高中生物模拟试题及答案
- 2025福建龙岩农业发展有限公司所属企业招聘1人模拟试卷及答案详解(易错题)
- 华英面试语文试卷及答案
- 化学与核技术伦理(和平利用)联系试题
- 化学能力发展评估(学年)试题
- 古代太医考试题目及答案
- 2025年高考物理核心模型再巩固试题
- 2025年武汉大学考研真题及答案
- 签订待岗协议书
- GB/T 17642-2025土工合成材料非织造布复合土工膜
- 《医用细胞生物学》课件:线粒体的功能与疾病
- 外聘电工安全协议书范本
- 自然地理学 第七章学习资料
- 风力发电机组偏航系统(风电机组课件)
- 保密知识课件下载
- 典型故障波形分析(电力系统故障分析课件)
- 2025监理工程师教材水利
- 江苏高中英语牛津译林版新教材必修一词汇(默写版)
- 人教版六年级上册数学期中考试试卷完整版
评论
0/150
提交评论