Common Table Expression (CTE) – Biểu thức bảng chung trong SQL Server
- 29-05-2022
- Toanngo92
- 0 Comments
Common Table Expression (CTE) – Biểu thức bảng chung
CTE có thể hểu như là một tập kết quả tạm thời đươc định nghĩa bên trong phạm vi của một câu lệnh đơn SELECT, INSERT, UPDATE, DELETE hoặc CREATE VIEW. CTE CTE là một biểu thức được đặt tên được định nghĩa trong một truy vấn. CTE được định nghĩa khi bắt đầu truy vấn và có thể được tham chiếu nhiều lần trong truy vấn bên ngoài.
CTE bao gồm các tham chiếu đến chính nó được gọi là CTE đệ quy.
Thế mạnh của CTE là phát triển khả năng đọc lệnh và dễ dàng maintain một câu lệnh phức tạp.
Cú pháp:
WITH <CTE_Name>
AS (<CTE_definition>)
Ví dụ, để nhận và hiển thị ra khách hàng hàng năm cho các đơn đặt hàng có trong bảng Sales.SalesOrderHeader:
WITH CTE_OrderYear AS (SELECT YEAR(OrderDAte) AS OrderYear,CustomerID FROM Sales.SalesOrderHeader) SELECT OrderYear, COUNT(DISTINCT CustomerID) AS CustomerCount FROM CTE_OrderYear GROUP BY OrderYear;
Ở ví dụ trên, CTE_OrderYear được xác định như là tên của CTE. Từ khóa WITH … AS bắt đầầu định nghĩa một CTE, sau đó CTE được sử dụng trong câu lệnh SELECT để lấy ra và hiển thị toàn bộ kết quả.
Nhiều CTE có thể được định nghĩa cùng trong mệnh đề WITH. Ví dụ:
WITH CTE_Students
AS (
SELECT S.StudentCode, S.Name, C.CityName, St.Status FROM Student S)
INNER JOIN City C ON S.CityCode = C.CityCode INNER JOIN Status St
ON S.StatusId = St.StatusID),
StatusRecord AS (
SELECT Status, COUNT(Name) AS CountofStudents FROM CTE_Students
GROUP BY Status
)
SELECT * FROM StatusRecord