خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
CTE در SQL Server
CTE یا Common Table Expression در SQL Server، یک result set موقت است که برای ارجاع در یک عبارت دیگر از جمله SELECT ، INSERT ، UPDATE یا DELETE استفاده می شود. CTE هیشه یک result set ای را برمی گرداند و از این رو CTE یک روش آسان برای مقابله با کوئری های پیچیده ، Subquery ها یا Join های متعدد است.
Syntax استفاده از CTE به فرم زیر می باشد.
در ادامه کار مثال از CTE خواهید دید و با طرز کار و نحوه استفاده آن در SQL Server آشنا خواهید شد.
در اسکریپ زیر، از CTE برای برگرداندن نام کارمند یا کارمندانی که نام کوچک آن دارای حرف "G" است استفاده می کند.
دستور زیر از چندین CTE استفاده می کند و برای بازگرداندن اطلاعات کارمندان و جزئیات فروش منطقه ای و Join کردن این CTE ها می باشد. در واقع با نحوه استفاده از چندین CTE در SQL Server آشنا خواهید شد.
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
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 استفاده می کند و برای بازگرداندن اطلاعات کارمندان و جزئیات فروش منطقه ای و 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
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: