- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Sql Serve Transact-SQL 新兵器学习总结之-公用表表达式(CTE)
公用表表达式是Sql Server2005新增加的一个非常好用的功能。
公用表表达式 (CTE) 可以认为是在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集。CTE 与派生表类似,具体表现在不存储为对象,并且只在查询期间有效。与派生表的不同之处在于,CTE 可自引用,还可在同一查询中引用多次。CTE可用于: 1.创建递归查询(我个人认为CTE最好用的地方)2.在同一语句中多次引用生成的表
CTE优点:使用 CTE 可以获得提高可读性和轻松维护复杂查询的优点。查询可以分为单独块、简单块、逻辑生成块。之后,这些简单块可用于生成更复杂的临时 CTE,直到生成最终结果集。
CTE可使用的范围:可以在用户定义的例程(如函数、存储过程、触发器或视图)中定义 CTE。下面看一个简单的CTE例题:把test表中salary最大的id记录保存在test_CTE中,再调用
with?test_CTE(id,salary)as(????select?id?,max(salary)????from?test????group?by?id)select?*?from?test_cte
由上面例题可以看出:CTE 由表示 CTE 的表达式名称、可选列列表和定义 CET 的查询组成。定义 CTE 后, 可以在 SELECT、INSERT、UPDATE 或 DELETE 语句中对其进行引用,就像引用表或视图一样。简单的说CTE可以替代临时表和表变量的功能。我个人认为cte最好用的地方是创建递归查询,下面演示一下这功能:现有一数据结构如下:这些数据存放在表Co_ItemNameSet中,表结构和部分数据如下:ItemId????? ParentItemId ItemName2?????????? 0??????????? 管理费用3?????????? 0??????????? 销售费用4?????????? 0??????????? 财务费用5?????????? 0??????????? 生产成本35????????? 5??????????? 材料36????????? 5??????????? 人工37????????? 5??????????? 制造费用38????????? 35?????????? 原材料39????????? 35?????????? 主要材料40????????? 35?????????? 间辅材料41????????? 36?????????? 工资42????????? 36?????????? 福利43????????? 36?????????? 年奖金现在需求是:我想查询ItemId=2,也就是管理费用和其下属所有节点的信息通过CTE可以很简单达到需求要的数据为了体现CTE的方便性,我特意也写了一个sql2000版本的解决方法,先看看sql2000是怎么解决这个问题的
sql2000版本--sql2000版本DECLARE?@i?INTSELECT?@i=2; /*使用临时表作为堆栈来跟踪所有正在处理中的项目(已经开始但尚未结束)。某个项目一旦处理完毕,将被从堆栈中删除。当发现新的项目时,这些项目将被添加到堆栈中。*/CREATE?TABLE?#tem([ItemId]?[INT]??NOT?NULL,[level]?INT);/*存放结果*/CREATE?TABLE?#list([ItemId]?[INT]??NOT?NULL,[ParentItemId]?[INT]?NOT?NULL?DEFAULT?((0)),[ItemName]?[nvarchar](100)?NOT?NULL?DEFAULT?(),[level]?INT);INSERT?INTO?#tem([ItemId],[level])SELECT??ItemId,?1FROM??Co_ItemNameSetWHERE?itemid=@i??INSERT?INTO?#list([ItemId],[ParentItemId],[ItemName],[level])SELECT??ItemId,?ParentItemId,?ItemName?,1FROM??Co_ItemNameSetWHERE?itemid=@i??DECLARE?@level?INTSELECT?@level=1DECLARE?@current?INTSELECT?@current=0/*当?@level?大于?0?时,执行以下步骤:
您可能关注的文档
- REUSE_ALVGRID_DISPLAY超详细讲解.doc
- RFC1055_在行线路上传输IP数据报的非标准协议.doc
- Renesas R78L1C 16位MCU开发方案.docx
- RF+jenkin+svn自动化持续集成环境搭建.doc
- RFID技术在广东网固定资产管理中的应用.doc
- RJ必修2化学第四~学业测评(孔诗韵)知识点.docx
- ROUTE Chater 1 6.0 .doc
- RL-QP-01 件控制程序 -6修改.doc
- ROS ADSL双负载均衡+PPPOE服务器教程图文详解.doc
- RouterOS 3.24版本PCC多线负载均衡设置例程.doc
- sql serve 存储过程及应用实例笔记.docx
- Sql serve r2的10.5版数据库文件还原成10.0版数据库文件.doc
- SQL Serve 中的新日期数据类型.docx
- sql serve 教材思考与练习答案(1-9).doc
- SQL Serve 登录问题(错误 233和18456)解决方法.docx
- sql serve 酒店客房管理系统设计说明书 数据库大作业课程设计说明书 (含源文件).doc
- Sql serve优化查询速度51法.doc
- SQL Serve从入门到精通 课后习题与答案.doc
- SQL Serve 网络数据库的建立.doc
- SQL SERVE公用表表达式CTE详解.doc
最近下载
- JCT 2112-2012 塑料防护排水板.建材建工行业标准.pdf VIP
- 08J907 洁净厂房建筑构造.pdf VIP
- 某企业设备机长负责制.docx VIP
- 《第六次全国幽门螺杆菌感染处理共识报告》解读.pptx
- 北京理想汽车有限公司竞争战略研究.pdf
- 最新计算机应用基础教案win7---2010汇编.doc VIP
- 【新教材】湘教版(2024)七年级上册地理第二章《认识地球》测试卷(含答案).docx VIP
- JIS-H5302-2006铝合金压铸件(中文).pdf VIP
- 部编人教版六年级上册《道德与法治》知识点考点归纳总结.pdf VIP
- MEGMEET麦格米特MC160增强型系列PLC随机手册.pdf VIP
文档评论(0)