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
[ 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