2013-10-02 33 views
0

我對CTE很新穎 - 當我們定義一個公用表表達式時,我們是否將它創建爲存儲過程,視圖等?例如,如果我有:Common Table Expressions - 我們在哪裏創建一個?查看,存儲過程等?

USE AdventureWorks2012; 
GO 
WITH DirectReports(ManagerID, EmployeeID, Title, EmployeeLevel) AS 
(
    SELECT ManagerID, EmployeeID, Title, 0 AS EmployeeLevel 
    FROM dbo.MyEmployees 
    WHERE ManagerID IS NULL 
    UNION ALL 
    SELECT e.ManagerID, e.EmployeeID, e.Title, EmployeeLevel + 1 
    FROM dbo.MyEmployees AS e 
     INNER JOIN DirectReports AS d 
     ON e.ManagerID = d.EmployeeID 
) 
SELECT ManagerID, EmployeeID, Title, EmployeeLevel 
FROM DirectReports 
ORDER BY ManagerID; 
GO 

我該在哪裏存放這個?我希望我有道理。這是一個我想要存儲在某個地方以供重用的查詢。

+3

CTE始終是實際語句的一個*部分* - 在上述情況下,是一個「SELECT」。你的問題等同於「我應該在哪裏創建一個'SELECT'語句?」 - 顯而易見的答案是,只要你有意義就可以這樣做。 –

回答

1

您將使用一個視圖。雖然這是一個分層查詢,但它仍然是這樣的:一個查詢。

相關問題