Aracılığıyla paylaş


Ortak tablo ifadeleri kullanma

Ortak bir tablo deyim (cte), tek bir seçin, Ekle, update, delete veya create VIEW deyim yürütme kapsam içinde tanımlanan bir geçici sonuç küme olarak düşünülebilir.Yalnızca sorgu süresince ne ve bir nesne olarak depolanmayan bir cte türetilmiş bir tablo için benzer.Türetilmiş bir tablo farklı bir cte baþvuran olabilir ve aynı sorguda birden çok kez başvurulabilir.

Bir cte için kullanılabilir:

  • Özyinelenen bir sorgu oluşturun.Daha fazla bilgi için bkz: Özyinelemeli sorgular ortak tablo ifadeleri kullanma.

  • Genel bir görünümünü kullandığınızda bir görünüm yerine gerekli değildir; diğer bir deyişle, tanım meta veriler depolamak gerekmez.

  • skaler alt seçim türetilmiş bir sütuna göre gruplandırma etkinleştir veya bir işlev olan ya da olmayan deterministic veya dış erişimi vardır.

  • Ortaya çıkan tablo aynı deyim içinde birden çok kez başvuru.

Bir cte kullanılarak geliştirilmiş okunabilirlik ve karmaşık sorgular sürdürülmesine de Kolaylığı avantajları sunar.Sorgu ayrı, basit mantıksal yapı taşları ayrılabilir.Bu basit bloklar daha sonra Nihai sonuç küme oluşturulana kadar daha karmaşık, ara CTEs oluşturmak için kullanılabilir.

CTEs, kullanıcı tanımlı işlevler, saklı yordamlar, Tetikleyiciler veya görünümler gibi yordamları olarak tanımlanabilir.

Bir cte yapısı

Bir cte cte, isteğe bağlı sütun listesi ve cte tanımlayan bir sorguyu temsil eden bir ifade adını yapılır.Bir cte tanımlandıktan sonra gibi bir tablo veya görünümü bir select, INSERT, update veya delete deyim için başvurulabilir.Bir cte bir create VIEW deyim kendi tanımlayan deyim bir parçası olarak da kullanılabilir.

Bir cte yapısını temel sözdizimi şöyledir:

WITH expression_name [ ( column_name [,... n] ) ]

AS

( CTE_query_definition )

Sütun adları listesini elde edilen tüm sütunlar için farklı ad sorgu tanımı içinde kullanılmazsa isteğe bağlıdır.

cte çalıştırmak için deyim şudur:

SELECT <column_list>

FROM expression_name;

Örnek

Bileşenleri cte yapısı aşağıdaki örnekte gösterilmiştir: ifadead, sütun listesi ve sorgu.cte ifade Sales_CTE üç sütunu vardır (SalesPersonID, SalesOrderID, and OrderDate) ve toplam satış siparişlerinin sayısı, her yıl için her satışçı olarak tanımlanan

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

Kısmi bir sonuç küme aşağıdadır:

SalesPersonID TotalSales  SalesYear

------------- ----------- -----------

274           4           2001

274           20          2002

274           14          2003

274           10          2004

275           56          2001

275           139         2002

275           169         2003