خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


CTE در SQL Server

CTE در SQL Server
CTE یا Common Table Expression در SQL Server، یک result set موقت است که برای ارجاع در یک عبارت دیگر از جمله SELECT ، INSERT ، UPDATE یا DELETE استفاده می شود. CTE هیشه یک result set ای را برمی گرداند و از این رو CTE یک روش آسان برای مقابله با کوئری های پیچیده ، Subquery ها یا Join های متعدد است.

نرم افزار سامانه مودیان راهکار
Syntax استفاده از CTE به فرم زیر می باشد.



WITH expression_name[(column_name [,...])]
AS
(CTE_definition)
Sql code;

در ادامه کار مثال از CTE خواهید دید و با طرز کار و نحوه استفاده آن در SQL Server آشنا خواهید شد.
در اسکریپ زیر، از CTE برای برگرداندن نام کارمند یا کارمندانی که نام کوچک آن دارای حرف "G" است استفاده می کند.

With CTE_EmpDetails

AS ( SELECT *

FROM DimEmployee E where FirstName like '%G%'
)

SELECT * FROM CTE_EmpDetails

CTE در SQL Server

Using CTE As a View

وقتی CTE را تعریف می کنیم، به ستون آن یک نام می دهیم و به این ترتیب CTE مانند یک VIEW عمل می کند. اسکریپت زیر از CTE برای بازگرداندن اطلاعات کارمندان و جزئیات فروش آنها در مناطق می باشد.

WITH CTE_EmpSalesDetails

( EmployeeKey , FirstName , LastName , Title, SalesTerritoryKey,

SalesTerritoryRegion, SalesTerritoryCountry, SalesTerritoryGroup )

AS (

SELECT E.EmployeeKey , E.FirstName , E.LastName ,

E.Title, S.SalesTerritoryKey, S.SalesTerritoryRegion,

S.SalesTerritoryCountry, S.SalesTerritoryGroup

FROM DimEmployee E INNER JOIN DimSalesTerritory S

ON E.SalesTerritoryKey=S.SalesTerritoryKey

)

SELECT * FROM CTE_EmpSalesDetails WHERE SalesTerritoryKey in ( 1,2,4,5,6)

CTE در SQL Server
دستور زیر از چندین CTE استفاده می کند و برای بازگرداندن اطلاعات کارمندان و جزئیات فروش منطقه ای و Join کردن این CTE ها می باشد. در واقع با نحوه استفاده از چندین CTE در SQL Server آشنا خواهید شد.

WITH CTE_EmpSalesDetails ( EmployeeKey, FirstName, LastName, Title,
SalesTerritoryKey,SalesTerritoryRegion, SalesTerritoryCountry,
SalesTerritoryGroup )

AS ( SELECT E.EmployeeKey, E.FirstName, E.LastName, E.Title, S.SalesTerritoryKey,
S.SalesTerritoryRegion, S.SalesTerritoryCountry, S.SalesTerritoryGroup
FROM DimEmployee E INNER JOIN DimSalesTerritory S
ON E.SalesTerritoryKey=S.SalesTerritoryKey
) ,

CTE_EmpFilter ( EmployeeKey )

AS ( SELECT E.EmployeeKey

FROM DimEmployee E where FirstName like '%G%'
)

SELECT * FROM CTE_EmpSalesDetails CTE_ES INNER JOIN CTE_EmpFilter CTE_E

ON CTE_ES.EmployeeKey = CTE_E.EmployeeKey

CTE در SQL Server

نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز