Udostępnij za pośrednictwem


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