在View中使用CTE

-- SQL create view with CTE (Common Table Expression)

USE AdventureWorks

GO

CREATE VIEW vSalesStaffQuickStats

AS

  WITH SalesBySalesPerson (SalesPersonID, NumberOfOrders, MostRecentOrderDate)

      AS

      (

            SELECT SalesPersonID, COUNT(*), MAX(OrderDate)

            FROM Sales.SalesOrderHeader

            GROUP BY SalesPersonID

      )

  SELECT E.EmployeeID,

         EmployeeOrders = OS.NumberOfOrders,

         EmployeeLastOrderDate = OS.MostRecentOrderDate,

         E.ManagerID,

         ManagerOrders = OM.NumberOfOrders,

         ManagerLastOrderDate = OM.MostRecentOrderDate

  FROM   HumanResources.Employee AS E

       INNER JOIN SalesBySalesPerson AS OS

         ON E.EmployeeID = OS.SalesPersonID

       LEFT OUTER JOIN SalesBySalesPerson AS OM

         ON E.ManagerID = OM.SalesPersonID

GO

-- T-SQL test view

SELECT * FROM vSalesStaffQuickStats

ORDER BY EmployeeID

GO


原文链接:http://www.sqlusa.com/bestpractices2005/viewwithcte/

原文地址:https://www.cnblogs.com/Dannier/p/2629901.html