【译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正】
原文链接:传送门。
一个简单的CTE例子
如前所述,CTE‘s提供给你了一个方法来更容易的书写复杂的代码以提高其可读性。假设你有列表1所示的代码:
USE AdventureWorks2012; GO SELECT YearMonth, ProductID, SumLineTotal FROM ( SELECT CONVERT(CHAR(7),ModifiedDate,120) AS YearMonth , ProductID , SUM(LineTotal) AS SumLineTotal FROM Sales.SalesOrderDetail GROUP BY ProductId, CONVERT(CHAR(7),ModifiedDate,120) ) MonthlyProductSales WHERE YearMonth = ‘2008-06‘;
列表1:带有子查询的代码
列表1具有一个SELECTY语句,其带有一个在FROM子句中的子查询。这个子查询是一个具有别名MonthlyProductSales 的派生表,其对ModifiedDate字段的每一个Year/Month组合都总结了其LineTotal 数量。从我的MonthlyProductSales 子查询的结果中,我对结果进行约束,使得其仅仅返回那些年和月为 2008,06的数据行。
虽然列表1的代码已经是相当的简洁了,我们可以通过用一个CTE来重写它以提高它的可读性,就像我在列表2中所做的那样。
【译】高级T-SQL进阶系列 (三)【中篇】:理解公共表表达式(CTEs)
原文:https://www.cnblogs.com/qianxingmu/p/12093822.html