PDA

View Full Version : Dùng WITH để đặt tên tạm


TrungBravo
08-16-2010, 09:45 AM
Cú pháp:
[ WITH <common_table_expression> [ ,...n ] ]
<common_table_expression>::=
expression_name [ (column_name [ ,...n ] ) ]
AS
(CTE_query_definition)

Ta dùng WITH để đặt tên tạm cho các query (sub-query) để cho dễ hiểu hơn
Ví dụ: thông thường ta viết

SELECT B30Ct.Stt, Ma_Ct, Ngay_Ct, Dien_Giai0, B.Tien AS Tong_Tien
FROM B30Ct
LEFT OUTER JOIN (
SELECT Stt, SUM(Tien) AS Tien
FROM B30CtKt
GROUP BY Stt) AS B
ON B30Ct.Stt = B.Stt
WHERE Ma_Nvu = 'K'

Nếu dùng WITH ta có thể viết:

WITH B (Stt, Tien)
AS
(
SELECT Stt, SUM(Tien) AS Tien
FROM B30CtKt
GROUP BY Stt
)
SELECT B30Ct.Stt, Ma_Ct, Ngay_Ct, Dien_Giai0, B.Tien AS Tong_Tien
FROM B30Ct
LEFT OUTER JOIN B
ON B30Ct.Stt = B.Stt
WHERE Ma_Nvu = 'K'

Chi tiết hơn thì xem M$ hướng dẫn ở đây
http://msdn.microsoft.com/en-us/library/ms175972.aspx

chautinhtri
08-18-2010, 04:54 PM
WITH còn dùng để tính đệ quy đấy bà con à
Có ai đã dùng cái từ khóa này chưa ???