Przy użyciu typowych wyrażeń tabeli
Typowe wyrażenie tabela (CTE) można traktować jako zestaw wyników tymczasowych określonych w zakresie wykonania pojedynczego wybierz, WSTAW, UPDATE, DELETE lub tworzenie WIDOKU instrukcja.CTE jest podobna do tabela pochodnej, ponieważ nie są przechowywane jako obiekt i trwa tylko na czas kwerendy.W przeciwieństwie do tabela pochodnej CTE może być odwołujących się do siebie i można odwoływać się wiele razy w tej samej kwerendy.
CTE może służyć do:
Utwórz kwerendę cykliczną.Aby uzyskać więcej informacji, zobacz Typowe wyrażenia tabeli za pomocą kwerend cyklicznych.
Substytut dla widoku ogólne korzystania z widoku nie jest wymagane; oznacza to, że nie trzeba przechowywać definicji metadane.
Umożliwiają grupowanie według kolumna, pochodzącej z wartość skalarna Podselekcja lub funkcja, która nie jest deterministic lub ma dostęp do zewnętrznych.
Odwołanie wynikowej tabela wiele razy w tym samym instrukcja.
Za pomocą CTE oferuje korzyści poprawę czytelności i łatwości w konserwacji złożonych kwerend.Kwerendę można podzielić na oddzielnych, prostych, logiczne bloki.Następnie można te bloki proste tworzenie bardziej złożonych, tymczasowe CTEs aż wygenerowany zestaw wyników końcowych.
CTEs można zdefiniować w procedurach użytkownika, takie jak funkcje, procedur przechowywanych, wyzwalaczy lub widoków.
Struktura CTE
CTE składa się z nazwy wyrażenie reprezentujące CTE, opcjonalny kolumna listy i definiowanie CTE kwerendy.Po zdefiniowaniu CTE można się odwoływać, jak w tabela lub widoku, można w instrukcja SELECT, INSERT, UPDATE lub DELETE.CTE można również w instrukcja CREATE VIEW jako część jego definiowanie instrukcja SELECT.
Struktura podstawowa składnia dla CTE jest:
WITH expression_name [ ( column_name [,... n] ) ]
AS
( CTE_query_definition )
Lista kolumna nazwy jest opcjonalna, jeśli różne nazwy wszystkich wynikających kolumnas są dostarczane w definicji kwerendy.
Instrukcja uruchamiania CTE jest:
SELECT <column_list>
FROM expression_name;
Przykład
W poniższym przykładzie pokazano składniki struktury CTE: Nazwa wyrażenie kolumna listy i kwerendy.Wyrażenie CTE Sales_CTE zawiera trzy kolumny (SalesPersonID, SalesOrderID, and OrderDate) i jest zdefiniowany jako całkowita liczba zamówień sprzedaży rocznie dla każdego sprzedawcy.
USE AdventureWorks2008R2;
GO
-- Define the CTE expression name and column list.
WITH Sales_CTE (SalesPersonID, SalesOrderID, SalesYear)
AS
-- Define the CTE query.
(
SELECT SalesPersonID, SalesOrderID, YEAR(OrderDate) AS SalesYear
FROM Sales.SalesOrderHeader
WHERE SalesPersonID IS NOT NULL
)
-- Define the outer query referencing the CTE name.
SELECT SalesPersonID, COUNT(SalesOrderID) AS TotalSales, SalesYear
FROM Sales_CTE
GROUP BY SalesYear, SalesPersonID
ORDER BY SalesPersonID, SalesYear;
GO
Oto częściowego zestaw wyników:
SalesPersonID TotalSales SalesYear
------------- ----------- -----------
274 4 2001
274 20 2002
274 14 2003
274 10 2004
275 56 2001
275 139 2002
275 169 2003