在Sql Server 2005使用公用表表达式CTE简化复杂的查询语句

公用表表达式CTE是Sql Server 2005引入的一种新的表表达式。CTE在许多方面都类似于派生表。逻辑上CTE是一个临时结果集,它仅仅存在于它发生的语句中。您可以在SELECT、INSERT、DELETE、UPDATE或CTEATE VIEW语句中建立一个CTE。

CTE的优点

与派生表不同,CTE能够引用自己本身。如果您不必存储视图,您可以用一个CTE来代替它。在一个语句中,您还可以多次引用CTE。应用CTE,您可以通过一个派生栏对结果进行分组。CTE可以将查询区域分割成可读的“块”,然后用这些块建立一个复杂的查询。

创建CTE

WITH CTE_name[ (column_name [,...n] ) ]

AS

( CTE_query_specification )

Outer_query_using_Cte;

注意CTE和外部的查询语句之间不能使用分号;

例如:

 

ExpandedBlockStart.gif代码
WITH cte_Employee
AS
(
SELECTe.EmployeeID, c.FirstName, c.MiddleName, c.LastName,
e.Title 
AS JobTitle, c.Phone, e.ManagerID
FROMHumanResources.EmployeeAS e 
INNER JOIN Person.ContactAS c ON c.ContactID = e.ContactID
)
SELECT * FROM cte_Employee;

 

 

多CTE

CTE不能被直接嵌套。但是可以在同一个WITH语句中定于多个CTE,每个CTE可以应用前面的CTE。外部查询可以访问到所有的CTE。利用这一功能可以简化复杂的嵌套查询。

 

WITH cte1 as
(
    ....
)
cte2 
as
(
    
SELECT * FROM cte1
)
SELECT * FROM cte2

 

 

多引用

即你可以再外部查询中多次引用同一个CTE名称。不必像派生表那样重复定义相同的查询。

转载于:https://www.cnblogs.com/hyl8218/archive/2009/12/23/1630448.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】搞机:window10安装Linux子系统(WSL)及迁移到非系统盘

转自:搞机:window10安装Linux子系统(WSL)及迁移到非系统盘_泛泛之素-CSDN博客_wsl移动到非系统盘 痛点: 在电脑上想要使用linux又想使用windows系统只能安装双系统,因为虚拟机的性能差且使用麻烦&#xf…

关键字static、const、volatile的作用

关键字static的作用是什么? 这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用: 1、在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2、 在模块内(但在函数体外&…

IE8中解决Cell华表插件不显示方法!

最近一不小心更新了IE,从IE7一跃变成了IE8用户,但网上目前对IE8的评价不是很好,有很多东西不兼容,尤其是在IE7下开发的系统不兼容的地方还是存在的。就Cell来说也是一样的,调试好久,虽然没找到原回&#xf…

【转】CMake Error: The current CMakeCache.txt directory CMakeCache.txt is different than the directory

转自:CMake Error: The current CMakeCache.txt directory is different..._万俟淋曦的进击手记-CSDN博客 零、问题描述 开始学ROS时,需要编译别人的功能包,常常把别人的工作空间拿过来使用,但编译时会出现各种错误,如…

WinCE 5.0 WIFI 无线网卡的配置和建立连接(转)

From:http://blog.csdn.net/xajhuang/archive/2008/12/02/3419512.aspx 在 Windows CE 下自带有无线网卡的配置和连接程序,可是我的系统剪裁掉了资源管理器和任务栏,导致自带的无线网卡配置程序不能再使用了,只好自力更生。 我的…

【转】Qt所有的类

转自:Qt所有的类 - IT观察者 - 博客园 QAccel处理键盘加速器和快捷键Handles keyboard accelerator and shortcut keysQAccessibleEnums与可达性的静态函数Enums and static functions relating to accessibilityQAccessibleInterface定义一个接口,该接…

异步调用与多线程

异步调用并不是要减少线程的开销, 它的主要目的是让调用方法的主线程不需要同步等待在这个函数调用上, 从而可以让主线程继续执行它下面的代码.与此同时, 系统会通过从ThreadPool中取一个线程来执行,帮助我们将我们要写/读的数据发送到网卡.由于不需要我们等待, 我们等于同时做…

【转】DPDK(一):专业术语

转自:DPDK(一):专业术语 - 小蚂蚁_CYJ - 博客园 一:简介 1、术语 EAL:Environment Abstraction Layer LPM:Longest Prefix Match IOVA-contiguous: VFIO:VFIO是一个可以…

wince2秒快速启动TOC分析

为什么29M的wince内核nk.nb0文件在2秒钟就能快速启动,如果你用汇编设计一个从NAND单纯拷贝29M nk.nb0的快速程序,你会发现用200MFCLK的2410或者用400MFCLK的2440都至少需要十几秒,那为什么ce能够启动这么快呢,有什么加速算法吗&am…

插座上的Linux充电器.不..Marvell Plug Computer

一直以来,台式机都有变小的趋势,于是变成了一体机,主机也有变小的趋势,那样可以占用更小的空间,却提供一样的功 能,Marvell Plug Computer 3.0 同样是那种壁插式主机,身形小巧,能够直…

【转】tftp命令详解

转自:tftp命令详解 - 张大猛 - 博客园 介绍一个 FTP客户端-IIS7服务器管理工具 作为FTP客户端,它支持批量管理ftp站点。定时上传和定时下载,定时备份,且操作简洁。同时iis7服务器管理工具还是vnc客户端。并且支持批量管理管理…

对Multi-bin 技术的理解

[bin文件的格式]: Bin文件格式比较简单.结构如下: struct BinFile { BYTE signature[7]; //前面7个字节是标志, 固定的{‘B’,‘0’,‘0’,‘0’,‘F’,‘F’,‘\a’}. DWORD ImageStart; //Image Start表示image的开始地址 DWORD ImageLength; …

关于C#程序调用AMFPHP服务的问题!!

我想实现的功能是实现一个c# winform客户端(web也行),与php服务器以amf3格式通信,其实就是模拟flex与php通信的机制,这方面资料真的太少了,不知道该怎么实现,求帮助,谢谢&#xff01…

【转】总结_C++日志系统log4cxx使用

转自:总结_C日志系统log4cxx使用_OneByOne-CSDN博客_log4cxx C日志系统log4cxx使用总结 参考连接: log4CXX第二篇---配置文件(properties文件)详解_crazyhacking的专栏-CSDN博客 C日志系统log4cxx使用总结_邵明_新浪博客 一、log4cxx组件…

S3c2440A平台HIVE注册表+binfs的实现

我的例子是基于samsung S3C2440A+samsung ONENANDWinCE5.0的,开发平台是platform builder 5.0,首先我们基于RAM register的image已经可以正常跑起来了,Flash除了放置image外其他的空间为用户提供文件系统,这部分的驱动…

DHT

DHT 类似Tracker的根据种子特征码返回种子信息的网络.DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网…

【转】日志记录库(log4cxx)使用指南

转自:日志记录库(log4cxx)使用指南_外环西路-CSDN博客 一、Log4j、log4cxx简介 Log4j、log4cxx有三个主要的组件: Loggers(记录器),Appenders (输出源)和Layouts(布局)。Loggers(记录器): 负责执行记录日…

WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(11)-BINFS在Nand上的实现(Multi-Bin的实现)

之前我们都是把整个系统镜像复制到RAM中运行,这样启动时间较慢,也占用内存.使用Multi-Bin的模式,将需要复制到RAM的组件和可存放在存储设备(如Nand)中的组件分开,系统启动时只需要将CE核心组件复制到内存中运行,然后需要的组件从Nand中读取即可.之前我们已经在eboot中添加了操作…

C# 数据库连接字符串集合

c#数据库连接字符串集合(一)常用连接:1.使用SqlConnection对象: a. Sql 验证public void SqlConnectionOpen(){SqlConnection conn new SqlConnection();conn.ConnectionString "user idsa;password;initial catalognorthwind;datasourcelocalhost;connect Timeout20&quo…

【转】聊聊Linux操作系统中的显示管理器及如何更换

转自:聊聊Linux操作系统中的显示管理器及如何更换 - linux-123 - 博客园 聊聊Linux操作系统中的显示管理器及如何更换 | 《Linux就该这么学》 什么是 Linux 中的显示管理器? 简单来说,显示管理器display manager(DM&#xff09…